/** * 冒泡 * 两两比较相邻记录,如果反序则交换,直到没有反序的记录为止 */ 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()); } } }