一些排序方法

2021-05-23 12:20:47 字數 1431 閱讀 7818

從網上找了一些排序方法,可能以後用的著,自己先編寫一下,然後存下來

1.冒泡法

思想:1.從a[0]到a[n],相鄰的兩個數進行比較,如果滿足條件則交換,如此反覆。

2.這種演算法要經過n-1輪的大迴圈。

以下是維基百科思想:

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

#include

#include

#define n 8

void bubblesort(int r,int n);

int main( )

;bubblesort(a, n);

for(int i=0;ir[j])

}2.選擇排序

思想:一次選定陣列中的每乙個數,記下當前位置並假設它是從當前位置開始後面數中的最小數min=i,從這個數的下乙個數開始掃瞄直到最後乙個數,並記錄下最小數的位置min,掃瞄結束後如果min不等於i,說明假設錯誤,則交換min與i位置上數。、

設陣列內存放了n個待排數字,陣列下標從1開始,到n結束。

i=1從陣列的第i個元素開始到第n個元素,尋找最小的元素。(具體過程為:先設arr[i]為最小,逐一比較,若遇到比之小的則交換)

將上一步找到的最小元素和第i位元素交換。

如果i=n-1演算法結束,否則回到第3步

#include

#include

#define n 8

void choicesort(int r,int n);

int main( )

;choicesort(a, n);

for(int i=0;ir[j])

if(i!=minindex)//判斷是否相等}}

3 插入排序方法

思想:它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。

重點關注從後向前的排序方法

從第乙個元素開始,該元素可以認為已經被排序

取出下乙個元素,在已經排序的元素序列中從後向前掃瞄

如果該元素(已排序)大於新元素,將該元素移到下一位置

重複步驟3,直到找到已排序的元素小於或者等於新元素的位置

將新元素插入到該位置中

重複步驟2

#include

#include

#define n 8

void insertsort(int r,int n);

int main()

;insertsort(a,n);

for(int i=0;i0 && temp < r[j-1] ; j--)//這一步解決從後向前排序的問題}}

NSArray排序的一些方法

大體上,oc中常用的陣列排序有以下幾種方法 sortedarrayusingselector sortedarrayusingcomparator sortedarrayusingdescriptors 1 簡單排序 sortedarrayusingselector 如果只是對字串的排序,可以利用s...

排序 一些排序的總結

假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,ri rj,且ri在rj之前,而在排序後的序列中,ri仍在rj之前,則稱這種排序演算法是穩定的 否則稱為不穩定的。排序演算法如果是穩定的,那麼從乙個鍵上排序,然後再從另乙個鍵上排序,第乙個...

jquery一些方法

1,追加元素 prepend 在被選元素的開頭插入內容 after 在被選元素之後插入內容 before 在被選元素之前插入內容 引數可以為string 也可以為html 2,離開頁面時,提示 不是jquery方法 3,選擇元素 匹配id以aaa開頭 select id aaa 匹配id以aaa結尾...