java排序算法

    科技2022-07-13  113

    几种排序算法:

    1、冒泡排序:

    int[] arr = {1,5,8,2,3,9,4}; int temp; 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]){ temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } System.out.println("从小到大排序的结果是:"); for(int i = 0;i < arr.length;i++){ System.out.println(arr[i] + "\t"); }

    运行结果:

    从小到大排序的结果是: 1 2 3 4 5 8 9 Process finished with exit code 0

    2、插入排序:

    int arr = {14,15,18,90,72,63,58}; int t = 0; int j = 0; for(int i = 0;i < arr.length;i++){ t = arr[i]; for(j = i - 1;j >= 0;j--){ if(arr[j] > t){ arr[j+1] = arr[j]; }else{ break; } } } arr[j+1] = t; } System.out.println("从小到大排序的结果是:"); for(int i = 0;i < arr.length;i++){ System.out.println(arr[i] + "\t"); }

    运行结果是:

    从小到大排序的结果: 14 15 18 58 63 72 90 Process finished with exit code 0

    3、选择排序:

    int[] arr = {5,3,6,2,10,2,1}; for (int i = 0; i < arr.length ; i++){ for (int j = i+1; j < arr.length ; j++){ if(arr[i] > arr[j]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } System.out.println("从小到大排序的结果:"); for (int i = 0; i < arr.length ; i++){ System.out.println(arr[i]+""); }

    运行结果:

    从小到大排序的结果: 1 2 2 3 5 6 10 Process finished with exit code 0

    4、希尔排序:

    int len = array.length; int temp,gap = 1/2; while(gap > 0){ for (int i = gap; i < len ; i++){ temp = array[i]; int preIndex = i - gap; while(preIndex >= 0 && array[preIndex] > temp){ array[preIndex + gap] = array[preIndex]; preIndex -= gap; } array[preIndex + gap] = temp; } gap /= 2; } return array;

    运行结果:

    从小到大排序的结果: 14 15 18 58 63 72 90 Process finished with exit code 0

    5,分桶排序:

    final int U = 10; int[] arr = new int[10]; int[] [] bucket = new int[U][arr.length]; int[] ixs = new int[U]; for(int i = 1,count,t;;i*=10){ count = 0; for (int j = 0; j < arr.length ; j++) { count = ( t == arr[j]/i)>=1 ? ++count : count; bucket[t%=U][ixs[t]++] = arr[j]; } if(count == 0) break; for (int j = 0; j < bucket.length; j++) { for (int k = 0; k < ixs[j] ; k++) { arr[ix++] = bucket[j][k]; } } for (int j = 0; j < ixs.length ; j++) { ixs[j] = 0; } } }

    运行结果:

    从小到大排序的结果是: 1 2 3 4 5 8 9 Process finished with exit code 0

     

    Processed: 0.016, SQL: 8