常用的排序

2021-07-14 20:34:44 字數 1394 閱讀 5108

排序有內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存,排序作為最常用的演算法之一掌握幾種最常用的是有必要的。

基本思想:用第乙個數字和所有數字比較替換,因為替換的是第i個數字所以就繼續比較就好。

public void sort

0(intvalues)}}

}

基本思想:用相鄰的兩個值一直比較,一次下來最後一位數 就會得到最大或者最小的值

public void sort00(intvalues)}}

}

基本思想:類似於一張一張插入撲克牌,每插一張牌順序都是排好的。

public

void

sort1(intvalues)else

}values[j]=temp; //把temp的填入}}

基本思想: 乙個從左向右查詢(尋找大於temp的值),乙個從右向左查詢各(尋找小於temp的值)一次。注意:temp是取的第乙個值即是左邊的值,所以從右邊先開始。

左邊開始大於temp的值放入右邊(下標j),右邊開始小於temp的值放入左邊(下標i)。

一次下來的效果就會是 temp左邊的值比temp小,temp右邊的值比temp大;

一次下來的效果: temp-1,temp-4,temp-n,temp,temp+n,temp+2,temp+4 以temp為中心分為兩半

//一次操作的演算法

public

intsort2(intvalues,int start,int end)

if(i==j)

j--;

}//從左向右 ---->

while(true)

if(i==j)

i++;}}

values[i]=temp; //這部很關鍵 要把當初得到的值回填。

return i;

}//把分下來的左右兩邊進行遞迴運算(一種分治的思想)

public

void

go(intarray,int start,int end)

int middle = sort2(array, start, end);

go(array, start, middle-1);//左邊的(底值)

go(array, middle+1, end); //右邊的 (高值)

}

個人認為當資料量較大時採用快速排序最好,而資料量較小時什麼排序簡單就按什麼來唄反正資料量小。

常用的排序

直接排序,堆排序,歸併排序,氣泡排序,快速排序,基數排序,桶式排序,直接插入排序,折半插入排序,shell排序,雞尾酒排序,鴿巢排序,二叉樹排序,b 樹排序 氣泡排序 兩兩比較待排序資料元素的大小,發現兩個資料元素的次序相反時即進行交換,直到沒有反序的資料元素為止。演算法時間複雜度是o n 2 選擇...

最常用的排序 快速排序

是一種不浪費空間又可以快一點的排序演算法。假設對 6 1 2 7 9 3 4 5 10 8 這10個數進行排序。首先在這個序列裡隨便找乙個數作為基準數。為了方便,讓6作為基準數,將這個序列中所有比基準數大的數放在6的右邊,比基準數小的數放在6的左邊。方法 分別從初始序列 6 1 2 7 9 3 4 ...

最常用的排序 快速排序

相對於桶排序,節省了空間,相對於氣泡排序,節省了時間,可謂是兩者兼顧的一種更優化的演算法 實現 假設有 初始序列 6 1 2 7 9 3 4 5 10 8 那麼從初始序列的兩端開始探測。先從右往左找到乙個比6小的數,然後在從左往右找到乙個比6大的數,然後交換他們。6 1 259 3 4710 8 這...