zoukankan      html  css  js  c++  java
  • 8个排序算法——java

      1 public static void radixsort(int[] a){
      2         int max=a[0];
      3         for(int i=1;i<a.length;i++){
      4             if (max<a[i]) {
      5                 max=a[i];
      6             }
      7         }
      8         int time=0;
      9         while(max>0){
     10             max/=10;
     11             time++;
     12         }
     13         java.util.List<ArrayList> queue=new ArrayList<ArrayList>();
     14         for(int i=0;i<10;i++){
     15             ArrayList<Integer> queue1=new ArrayList<>();
     16             queue.add(queue1);
     17         }
     18         for(int i=0;i<time;i++){
     19             for(int j=0;j<a.length;j++){
     20                 int x=a[j]%(int)Math.pow(10, i+1)/(int)Math.pow(10, i);
     21                 queue.get(x).add(a[j]);
     22             }
     23             int tmp=0;
     24             for(int j=0;j<10;j++){
     25                 while(!queue.get(j).isEmpty()){
     26                     a[tmp++]=(int)queue.get(j).remove(0);
     27                 }
     28             }
     29         }
     30         
     31         for (int i = 0; i < a.length; i++) {
     32             System.out.println("radixsort" + a[i]);
     33         }
     34     }
     35 
     36     public static void mergesort(int[] a) {
     37         sort(a, 0, a.length-1);
     38         for (int i = 0; i < a.length; i++) {
     39             System.out.println("mergesort" + a[i]);
     40         }
     41     }
     42 
     43     public static void merging(int[] a, int left, int middle, int right) {
     44         if (middle < left || middle > right) {
     45             return;
     46         }
     47         int[] tmpArray = new int[a.length];
     48         int tmp = left;
     49         int tmpIndex = left;
     50         int begin1 = left;
     51         int begin2 = middle+1;
     52         while (begin1 <= middle && begin2 <= right) {
     53             if (a[begin1] < a[begin2]) {
     54                 tmpArray[tmp++] = a[begin1++];
     55             } else {
     56                 tmpArray[tmp++] = a[begin2++];
     57             }
     58         }
     59         while (begin1 <= middle) {
     60             tmpArray[tmp++] = a[begin1++];
     61         }
     62         while (begin2 <= right) {
     63             tmpArray[tmp++] = a[begin2++];
     64         }
     65         while(tmpIndex<=right){
     66             a[tmpIndex]=tmpArray[tmpIndex++];
     67         }
     68     }
     69 
     70     public static void sort(int[] a, int left, int right) {
     71         if (left < right) {
     72             int middle = (right - left) / 2 + left;
     73             sort(a, left, middle);
     74             sort(a, middle + 1, right);
     75             merging(a, left, middle, right);
     76         }
     77     }
     78 
     79     public static void quicksort(int[] a) {
     80         System.out.println("quicksort");
     81         quick(a, 0, a.length - 1);
     82         for (int i = 0; i < a.length; i++) {
     83             System.out.println("quicksort" + a[i]);
     84         }
     85     }
     86 
     87     public static void quick(int[] a, int left, int right) {
     88         if (left < right) {
     89             int middle = getMiddle(a, left, right);
     90             quick(a, left, middle);
     91             quick(a, middle + 1, right);
     92         }
     93     }
     94 
     95     public static int getMiddle(int[] a, int left, int right) {
     96         int tmp = a[left];
     97         while (left < right) {
     98             while (a[right] >= tmp && right > left) {
     99                 right--;
    100             }
    101             a[left] = a[right];
    102             while (a[left] <= tmp && left < right) {
    103                 left++;
    104             }
    105             a[right] = a[left];
    106         }
    107         a[left] = tmp;
    108         return left;
    109     }
    110 
    111     public static void bubblesort(int[] a) {
    112         for (int i = 0; i < a.length; i++) {
    113             for (int j = 0; j < a.length - i - 1; j++) {
    114                 if (a[j] > a[j + 1]) {
    115                     swap(a, j, j + 1);
    116                 }
    117             }
    118         }
    119         for (int i = 0; i < a.length; i++) {
    120             System.out.println("bubblesort" + a[i]);
    121         }
    122     }
    123 
    124     public static void heapsort(int[] a) {
    125         for (int i = a.length - 1; i >= 0; i--) {
    126             buildmaxheap(a, i);
    127             swap(a, i, 0);
    128 
    129         }
    130         for (int i = 0; i < a.length; i++) {
    131             System.out.println("heapsort" + a[i]);
    132         }
    133     }
    134 
    135     public static void swap(int[] a, int i, int j) {
    136         int temp = a[i];
    137         a[i] = a[j];
    138         a[j] = temp;
    139     }
    140 
    141     public static void buildmaxheap(int[] a, int lastindex) {
    142         int length = a.length;
    143         if (lastindex >= length) {
    144             return;
    145         }
    146         int index = (lastindex - 1) / 2;
    147         for (; index >= 0; index--) {
    148             int left = index * 2 + 1;
    149             if (left <= lastindex) {
    150                 if (a[index] < a[left]) {
    151                     swap(a, index, left);
    152                 }
    153             }
    154             if (left < lastindex && a[index] < a[left + 1]) {
    155                 swap(a, index, left + 1);
    156             }
    157         }
    158     }
    159 
    160     public static void selectsort(int[] a) {
    161         int pos = 0;
    162         for (int i = 0; i < a.length; i++) {
    163             pos = i;
    164             for (int j = i + 1; j < a.length; j++) {
    165                 if (a[pos] > a[j]) {
    166                     pos = j;
    167                 }
    168             }
    169             if (pos != i) {
    170                 int temp = a[i];
    171                 a[i] = a[pos];
    172                 a[pos] = temp;
    173             }
    174         }
    175         for (int i = 0; i < a.length; i++) {
    176             System.out.println("shellsort" + a[i]);
    177         }
    178     }
    179 
    180     public static void shellsort(int[] a) {
    181         int length = a.length;
    182         System.out.println(length);
    183         for (int d = (int) Math.ceil(length / 2); d > 0; d /= 2) {
    184             for (int i = 0; i < d; i++) {
    185                 System.out.println("i=" + i + " d=" + d);
    186                 for (int j = i + d; j < length; j += d) {
    187                     int temp = a[j];
    188                     int k = j - d;
    189                     System.out.println("j=" + j + " temp=" + temp + " k=" + k);
    190                     for (; k >= 0 && temp < a[k]; k -= d) {
    191                         System.out.println("k+d=" + (k + d) + " k=" + k + " a[k+d]=" + a[k + d] + " a[k]=" + a[k]);
    192                         a[k + d] = a[k];
    193                     }
    194                     System.out.println("end" + "k+d=" + (k + d) + " a[k+d]=" + a[k + d] + " temp=" + temp);
    195                     a[k + d] = temp;
    196                 }
    197             }
    198         }
    199         for (int i = 0; i < a.length; i++) {
    200             System.out.println("shellsort" + a[i]);
    201         }
    202     }
    203 
    204     public static void selectSort(int[] a) {
    205         int length = a.length;
    206         int position = 0;
    207         for (int i = 0; i < length - 1; i++) {
    208             int temp = a[i];
    209             int j = i + 1;
    210             position = i;
    211             for (; j < length; j++) {
    212                 if (a[j] < temp) {
    213                     temp = a[j];
    214                     position = j;
    215                 }
    216             }
    217             a[position] = a[i];
    218             a[i] = temp;
    219         }
    220         for (int i = 0; i < a.length; i++) {
    221             System.out.println("selectSort" + a[i]);
    222         }
    223     }
    224 
    225     public static void insertSort(int[] a) {
    226         int temp = 0;
    227         for (int i = 1; i < a.length; i++) {
    228             int j = i - 1;
    229             temp = a[j + 1];
    230             for (; j >= 0 && a[j] > temp; j--) {
    231                 System.out.println(j);
    232                 a[j + 1] = a[j];
    233             }
    234             System.out.println(j);
    235             a[j + 1] = temp;
    236         }
    237         for (int i = 0; i < a.length; i++) {
    238             System.out.println(a[i]);
    239         }
    240     }
    241 }
  • 相关阅读:
    TinyCMips
    C++坑点集合
    2017,不能再咸鱼了
    浅谈C语言变量声明的解析
    独自handle一个数据库大程有感
    Async Programming
    04python 中的各种推导式(python函数)
    03python 迭代器与生成器(python函数)
    02python 装饰器(python函数)
    01python 中的函数与函数式编程(python函数)
  • 原文地址:https://www.cnblogs.com/zl1991/p/6233994.html
Copyright © 2011-2022 走看看