1.选择排序,就是每次找到最小的元素,然后和第一位更换;然后第二次最小和第二个;。。。。。。。。
public static void main(String[] args) { int arr[] = {0,57,7,5,1}; System.out.println(Arrays.toString(choose(arr))); } public static int [] choose(int [] arr){ //选择排序的优化 for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序 int k = i; for(int j = k + 1; j < arr.length; j++){// 选最小的记录 if(arr[j] < arr[k]){ k = j; //记下目前找到的最小值所在的位置 } } //在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换 if(i != k){ //交换a[i]和a[k] int temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } } return arr; }
2.插入排序。 其实就是打扑克。 对于那种已经有序(部分有序),插入排序是效率表叫高的
public static void main(String[] args) { int arr[] = {0,57,7,5,1}; System.out.println(Arrays.toString(insert(arr))); } public static int [] insert(int [] arr){ int insertData,j; for(int i=1;i<arr.length;i++){//i 每个元素 ,从第二个元素开始 insertData = arr[i]; j=i-1;//这时候已经有序了,看看和之前相比,是否是小的 while(j>=0&&insertData<arr[j]){//主要是这个排 大还是小于;arr[j]是前一个元素 arr[j + 1] = arr[j];// 如果要插入的元素小于第j个元素,就将第j个元素向后移动 j--; } arr[j+1]=insertData;//如果满足条件直接不动,放在最后 } return arr; }
3.希尔排序 增量排序 http://blog.csdn.net/pzhtpf/article/details/7559896
希尔排序是 嫌弃 插入排序只能一个数组相邻元素 移动太慢。 在插入排序的基础上做的处理
@Test public void shell(){ int arr[]={1,54,6,3,78,34,12,45,56,100}; double N = arr.length;//这个是为了模拟增量 int temp = 0; while(true){//外面一次大循环是执行一次 增量的处理 5 3 1 N = Math.ceil(N/2); int increment =(int)N;//增量 for(int i=0;i<arr.length;i=i+increment){ int j = i-increment; temp = arr[i]; for(;j>=0&&temp<arr[j];j=j-increment){//这里是插入排序的思想 arr[j+increment] = arr[j];//交换数字 } arr[j+increment] = temp; } if(increment==1){ break; } } System.out.println(Arrays.toString(arr)); }
4. 归并排序 自定向下的排序
http://www.cnblogs.com/shudonghe/p/3302888.html
5.快速排序 找到分割点
http://www.cnblogs.com/coderising/p/5708801.html
6.冒泡排序
/** * 冒泡排序的 第一圈就是控制循环的走多少次 */ @Test public void bubble(){ int arr[] ={3,5,9,1,3,4,5,8,1}; for(int i=0;i<arr.length;i++){ for(int j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+","); } }
7.堆排序
http://blog.csdn.net/kimylrong/article/details/17150475