一、冒泡排序
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
public static void bubblesort(int[] arr) throws Exception{ for(int i=1;i<arr.length;i++) { boolean flag = true;//如果j循环一遍,没发生交换则证明排序完成 //arr[j+1]永远是前j+1中数最大的 //j < arr.length - i这里因为数组后i个已经是有序的了 for (int j = 0; j < arr.length - i; j++) { if(arr[j]>arr[j+1]) { int tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; flag=false; } } if(flag) break;; } return; }
二、选择排序
未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
public static void selectionsort(int[] arr)throws Exception{ for(int i=0;i<arr.length;i++) { int minloc=0;//记录最小值位置 int min=Integer.MAX_VALUE;//最小值 for(int j=i;j<arr.length;j++) { if(arr[j]<min) { min=arr[j]; minloc=j; } } int tmp=arr[i]; arr[i]=arr[minloc]; arr[minloc]=tmp; } return; }