1.最简单的冒泡排序
/** * 冒泡排序 */ public static void bubbleSort(){ int[] arr = {5,8,1,2,9,8,7,4}; System.out.println("排序前的数组为:" ); for (int num : arr){ System.out.println(num + " "); } 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 tem = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tem; }
}
}
System.out.println();
System.out.println("排序后的数组为:");
for (int num : arr){
System.out.println(num + " ");
}
}
2.插入排序
/** * 插入排序 * 思想:假设前面的几个是按照顺序排好的, * 之后的每一个元素会与之前有顺序的数组中值比较直到找到那个小于 * 他的就会交换位置,以此类推 * @param arr * @return */ public static int[] inserSort(int[] arr){ int temp = 0; for (int i = 0; i<arr.length; i++){ int j = i-1; temp = arr[i]; for (;j >=0 && temp<arr[j];j--){ arr[j+1] = arr[j];//将大与于temp的值往后移一个单位 } arr[j+1] = temp; }
return arr;
}
3.希尔排序
/** * 希尔排序 * 将数组分成d分成若干份,其余的就是按照插入排序来完成的,直到d=1就表示数组已经排好序了 * @param arr * @return */ public static int[] shellSort(int[] arr){ double d1 = arr.length; int temp = 0; while (true){ d1 = Math.ceil(d1/2); int d = (int) d1; for (int x = 0;x<d;x++){ for (int i = x+d;i<arr.length;i+=d){ int j = i-d; temp = arr[i]; for (;j>=0 && temp<arr[j]; j-=d){ arr[j+d] = arr[j]; } arr[j+d] = temp; } } if (d==1){ break; } } return arr;
}
4.选择排序
/** * 选择排序 * 从数组中找到最小的然后和第一个交换位置,然后再剩下的里找最小的和第二个交换位置, * 循环直到倒数第二个数和最后一个数比较 * @param arr * @return */ public static int[] selectSort(int[] arr){ int position = 0; for (int i=0;i<arr.length;i++){ position = i; int temp = arr[i]; for (int j=i+1;j<arr.length;j++){ if(arr[j]<temp){ temp = arr[j]; position = j; } } arr[position] = arr[i]; arr[i] = temp; } return arr; }
5.快速排序,稍后会写上