1. 程式人生 > >自己無聊腦袋短路想了一個排序算法。。

自己無聊腦袋短路想了一個排序算法。。

java自己思路自己寫的一個簡單的排序算法

當時是寫排序算法,寫到shell算法,突然腦袋短路想到了這個思路 然後就試著寫了下,

思路大體如下:

一列數列 例如:1,5,2,6,7,4,3

先看第一個數,1 它的前面沒有比它大的數,後面沒有比它小的數,若以它的位置就是這樣

再看第二個數,5 它的前面沒有比它大的數,後面有2,4,3三個數比它小,那他的位置是不是

應該向後移動3個單位。就是這樣1, , , ,5, ,

以此來看是不是就可以把數字的順序就記錄下來了,然而並不能直接在原來的數列中修改,

因為判斷一個數之後需要原有的數列繼續確定下一個數,所以說我在這個算法裏面又定義了一

個數組,來保存記錄下來的已經判斷過後的數字順序,這個算法是半個月之前寫的一直沒有在看

,因為有人讓我分享一些自己看的東西,就想到了這個,整理整理也沒考慮時 空復雜度,就這麽 寫了點東西,我也不知道之前這個算法有沒有什麽名字,好了不多嗶嗶代碼如下:


public static void sopln(Object obj)

{

System.out.println(obj.toString());

}

public static int[] show()

{

Scanner scan = new Scanner(System.in);

String[] str = scan.next().split(",");

int[] in = new int[str.length];

for(int i = 0; i<str.length; i++)

{

if(str[i] !=null)

{

in[i] = Integer.parseInt(str[i]);

}

else

in[i] = -1;

}

if(scan.nextLine().equals("over"))

scan.close();

return in;

}

public static boolean less(int a ,int b)

{

return a<b;

}

public static void exch(int[] in, int a, int b)

{

if(!((a<0||a>in.length-1)&&(b<0||b>in.length-1)))

{

int temp = in[a];

in[a] = in[b];

in[b] = temp;

}

sopln("交換錯誤!!");

}

public static boolean isSort(int[] in)

{

for(int i = 0;i<in.length-1;i++)

{

if(less(in[i+1],in[i]))

return false;

}

return true;

}

public static int[] mySortDemo(int[] in)

{

int[] ot = new int[in.length];

for(int x = 0; x <in.length;x++)

{

int min = 0;

int max = 0;

for(int y = 0;y < x; y++)

if(in[x]<in[y])

max++;

for(int y = x+1;y <in.length;y++)

if(in[x]>in[y])

min++;

ot[x-max+min] = in[x];

}

return ot;

}


本文出自 “13205514” 博客,謝絕轉載!

自己無聊腦袋短路想了一個排序算法。。