/**
* 冒泡
* 两两比较相邻记录,如果反序则交换,直到没有反序的记录为止
*/
public class bubble {
public static void bubblesort(int[] sort){
int tmp=0;
for (int i = 0; i < sort.length-1; i++) {
for (int j = 0; j < sort.length-i-1; j++) {
if(sort[j]>sort[j+1]){
tmp=sort[j];
sort[j]=sort[j+1];
sort[j+1]=tmp;
}
}
}
}
public static void main(String[] args) {
int sort[]={1,45,78,90,2,15,1000};
bubblesort(sort);
System.out.println(Arrays.toString(sort));
}
}
----------------------------------------------------------------------------------------------------------------------------------
/**
* 插入排序
* 依次将待排序序列中的每个记录插入到一个已排好序的序列中,直到全部序列排好序
*/
public class InsertSort {
// 插入排序
public static void insertSort(int[] arr) {
int select=0;
for (int i = 1; i < arr.length; i++) {
select=arr[i];
int j=0;
for (j=i;j>0 && arr[j-1]>=select;j--) {
arr[j]=arr[j-1];//跟前面比较,小值保留,大值后移
}
arr[j]=select;
}
}
public static void main(String[] args) {
int sort[]={1,45,2,15,1000};
insertSort(sort);
System.out.println(Arrays.toString(sort));
}
}
----------------------------------------------------------------------------------------------------------------------------------
/**
* 对象排序
* 用的选择排序的思想
*/
public class StudentSort {
private Student[] stus=new Student[50];
private int length=0;
public void insert(Student stu){
stus[length]=stu;
length++;
}
public void sortByNo(){
int min=0;
Student tmp=null;
for (int i = 0; i <length-1; i++) {
min=i;
for (int j = i+1; j < length; j++) {
if(stus[j].getStuNo() < stus[min].getStuNo()){
min=j;
}
}
tmp=stus[min];
stus[min]=stus[i];
stus[i]=tmp;
}
}
public void sortByName(){
int min=0;
Student tmp=null;
for (int i = 0; i < length-1; i++) {
min=i;
for (int j = i+1; j < length; j++) {
if(stus[j].getName().compareTo(stus[min].getName()) < 0){
min=j;
}
}
tmp=stus[min];
stus[min]=stus[i];
stus[i]=tmp;
}
}
public void display(){
for (int i = 0; i < length; i++) {
System.out.println(stus[i].toString());
}
}
public static void main(String[] args) {
Student stu1=new Student(11,"d张三","男",12);
Student stu2=new Student(4,"c李四","男",12);
Student stu3=new Student(20,"b王五","男",12);
Student stu4=new Student(10,"a赵六","男",12);
StudentSort studentSort=new StudentSort();
studentSort.insert(stu1);
studentSort.insert(stu2);
studentSort.insert(stu3);
studentSort.insert(stu4);
//studentSort.sortByNo();
studentSort.sortByName();
studentSort.display();
}
}
Student实体属性:stuNo,name,sex,age
扩展:中文排序怎么排?
----------------------------------------------------------------------------------------------------------------------------------
/**
* 选择排序
* 第i趟排序在无序序列r1-rn中找到值最小的记录,并和第i个记录交换作为有序序列的第i个记录
*/
public class Select {
public static void selectSort(int[] sort){
int tmp=0;
int min=0;
for (int i = 0; i < sort.length-1; i++) {
min=i;
for (int j = i+1; j < sort.length; j++) {
if(sort[j]<sort[min]){
min=j;//找最小
}
}
tmp=sort[i];
sort[i]=sort[min];
sort[min]=tmp;
}
}
public static void main(String[] args) {
int sort[]={1,45,78,90,2,15,1000};
selectSort(sort);
System.out.println(Arrays.toString(sort));
}
}
----------------------------------------------------------------------------------------------------------------------------------
/**
* 单词逆序
*/
public class Reverse {
private String input;
public void insert(String input){
this.input=input;
}
public String doReverse(){
CharStack cs=new CharStack(input.length());
for (int i = 0; i < input.length(); i++) {
char ch=input.charAt(i);
cs.push(ch);
}
String ouput="";
while (!cs.isEmpty()){
char ch=cs.pop();//弹栈
ouput+=ch;
}
return ouput;
}
public static void main(String[] args) {
Reverse reverse=new Reverse();
reverse.insert("abcdef");
System.out.println(reverse.doReverse());
}
}
/**
* 单词逆序字符
*/
public class CharStack {
private char[] stack;
private int top;
private int maxSize;
public CharStack() {
}
public CharStack(int maxSize) {
stack=new char[maxSize];
top=-1;
}
//压栈
public void push(char arr){
stack[++top]=arr;
}
//弹出数据
public char pop(){
return stack[top--];
}
//访问栈顶元素
public char peek(){
return stack[top];
}
public boolean isEmpty(){
return (top <= -1);
}
//占满
public boolean isFull(){
return (top == maxSize-1);
}
}
----------------------------------------------------------------------------------------------------------------------------------
/**
* 栈
*/
public class MyStack {
private long[] stack;
private int top;
private int maxSize;
public MyStack() {
}
public MyStack(int maxSize) {
stack=new long[maxSize];
top=-1;
}
//压栈
public void push(int arr){
stack[++top]=arr;
}
//弹出数据
public long pop(){
return stack[top--];
}
//访问栈顶元素
public long peek(){
return stack[top];
}
public boolean isEmpty(){
return (top <= -1);
}
//占满
public boolean isFull(){
return (top == maxSize-1);
}
}
/**
* 后进先出
* 先进后出
*/
public class stackSort {
public static void main(String[] args) {
MyStack myStack=new MyStack(10);
myStack.push(10);
myStack.push(2);
myStack.push(20);
myStack.push(40);
myStack.push(50);
if(!myStack.isEmpty()){
System.out.println("没弹出前的栈顶:"+myStack.peek());
System.out.println("弹出的栈顶:"+myStack.pop());
System.out.println("弹出后的栈顶:"+myStack.peek());
}
while (!myStack.isEmpty()){
System.out.println("剩余全部弹出:"+myStack.pop());
}
}
}