新发现:排序算法时间复杂度只有O(3n),命名为"wgw"排序法

时间:2022-10-15 11:42:52

思路:首先在待排序数组i[]中找出最大的值,以(最大值+1)的大小创建一个空数组kk[],然后遍历待排序数组i[]中的值n,其值n对应数组kk[]中的第n个元素加1。最后再把数组kk[]排好序的值赋回给数值i[]。

评价:此算法时间复杂度为O(3n)

代码实现如下:

int[] i ={2,6,9,8,5,6};

int temp = i[0];

for (int k = 1; k < i.length; k++)
   {
    if(i[k] > temp){
     temp = i[k];
    }
   }
   int[] kk = new int[temp+1];
   for (int j = 0; j < i.length; j++)
   {
    kk[i[j]]++;
   }

int count = 0;
   for (int j = 0; j < kk.length; j++) {
    for (int k = 0; k < kk[j]; k++) {
     i[count] = j;
     count++;
     }
    }