五 排序
- 20.排序算法之冒泡排序
- 21.排序算法之快速排序
- 22.排序算法之插入排序
- 23.排序算法之希尔排序
- 24.排序算法之选择排序
- 25. 排序算法之归并排序
- 26.排序算法之基数排序
- 27.基数排序之队列实现
排序算法之冒泡排序
package demo4; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { int[] arr=new int[] {5,7,2,9,4,1,0,5,7}; System.out.println(Arrays.toString(arr)); bubbleSort(arr); System.out.println(Arrays.toString(arr)); } //冒泡排序 /** * 5,7,2,9,4,1,0,5,7 共需要比较length-1轮 * 5,7,2,9,4,1,0,5,7 * 5,2,7,9,4,1,0,5,7 * 5,2,7,4,1,0,5,7,9 * 2,5 */ public static void bubbleSort(int[] arr) { //控制共比较多少轮 for(int i=0;i<arr.length-1;i++) { //控制比较的次数 for(int j=0;j<arr.length-1-i;j++) { if(arr[j]>arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } }
排序算法之快速排序
在这里插入代码片
排序算法之插入排序
package demo4; import java.util.Arrays; public class InsertSort { public static void main(String[] args) { int[] arr = new int[] {5,3,2,8,5,9,1,0}; insertSort(arr); System.out.println(Arrays.toString(arr)); } //插入排序 public static void insertSort(int[] arr) { //遍历所有的数字 for(int i=1;i<arr.length;i++) { //如果当前数字比前一个数字小 if(arr[i]<arr[i-1]) { //把当前遍历数字存起来 int temp=arr[i]; int j; //遍历当前数字前面所有的数字 for(j=i-1;j>=0&&temp<arr[j];j--) { //把前一个数字赋给后一个数字 arr[j+1]=arr[j]; } //把临时变量(外层for循环的当前元素)赋给不满足条件的后一个元素 arr[j+1]=temp; } } } }
排序算法之希尔排序
package demo4; import java.util.Arrays; public class ShellSort { public static void main(String[] args) { int[] arr = new int[] { 3, 5, 2, 7, 8, 1, 2, 0, 4, 7, 4, 3, 8 }; System.out.println(Arrays.toString(arr)); shellSort(arr); System.out.println(Arrays.toString(arr)); } public static void shellSort(int[] arr) { int k = 1; // 遍历所有的步长 for (int d = arr.length / 2; d > 0; d /= 2) { // 遍历所有有元素 for (int i = d; i < arr.length; i++) { // 遍历本组中所有的元素 for (int j = i - d; j >= 0; j -= d) { // 如果当前元素大于加上步长后的那个元素 if (arr[j] > arr[j + d]) { int temp = arr[j]; arr[j] = arr[j + d]; arr[j + d] = temp; } } } System.out.println("第" + k + "次排序结果:" + Arrays.toString(arr)); k++; } } }
排序算法之选择排序
package demo4; import java.util.Arrays; public class SelectSort { public static void main(String[] args) { int[] arr = new int[] {3,4,5,7,1,2,0,3,6,8}; selectSort(arr); System.out.println(Arrays.toString(arr)); } //选择排序 public static void selectSort(int[] arr) { //遍历所有的数 for(int i=0;i<arr.length;i++) { int minIndex=i; //把当前遍历的数和后面所有的数依次进行比较,并记录下最小的数的下标 for(int j=i+1;j<arr.length;j++) { //如果后面比较的数比记录的最小的数小。 if(arr[minIndex]>arr[j]) { //记录下最小的那个数的下标 minIndex=j; } } //如果最小的数和当前遍历数的下标不一致,说明下标为minIndex的数比当前遍历的数更小。 if(i!=minIndex) { int temp=arr[i]; arr[i]=arr[minIndex]; arr[minIndex]=temp; } } } }
排序算法之归并排序
排序算法之基数排序
基数排序之队列实现