各種排序演算法

2021-10-06 03:24:34 字數 1849 閱讀 4583

1.直接插入排序

/*description

有n個整數,請使用插入排序演算法對其排序,並輸出經過m趟排序後的序列(按從小到大排序)。

input

測試資料有多組,每組的第一行是兩個正整數n和m,其中2<=n<=20,0#define m 2

#define n 10

#include

#include

typedef

struct lnode

*linklist,lnode;

intmain()

p2->next =

null

;//直接插入開始

for(j =

1;j <= p1->n;

++j)

} p[i]

= head;

}for

(i =

0;i < m;i++

)}

2.氣泡排序

/*description

有n個整數,請使用氣泡排序演算法對其從小到大排序,輸出第m趟排序的結果。

input

測試資料有多組,每組的第一行是兩個正整數n和m,其中2<=n<=20,0#define n 10

#define m 2

#include

#include

typedef

struct lnode

*linklist,lnode;

intmain()

else

if(p1->m >=

0&& p1->m <=

(p1->n -1)

)}else

//氣泡排序

for(j =

0;j < p1->m;j++)}

}if(i ==

0) head = p1;

else p2->next = p1;

p2 = p1;

} p2->next =

null

;while

(head)

printf

("\n");

head = head->next;

}}

3.選擇排序

/*description

有n個整數,請使用選擇排序演算法對其按從小到大排序,輸出第m趟排序的結果。

input

測試資料有多組,每組的第一行是兩個正整數n和m,其中2<=n<=20,0#define n 10

#define m 2

#include

#include

typedef

struct lnode

*linklist,lnode;

intmain()

else

if(p1->m >=

0&& p1->m <=

(p1->n -1)

)}else

//選擇排序

for(j =

0;j < p1->m;j++)}

t = p1->a[min]

; p1->a[min]

= p1->a[j]

; p1->a[j]

= t;}if

(i ==

0) head = p1;

else p2->next = p1;

p2 = p1;

} p2->next =

null

;while

(head)

printf

("\n");

head = head->next;

}}

排序 各種排序演算法

每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子表中適當位置,直到全部記錄插入完成為止 待排序的記錄放在陣列r 0,n 1 中 排序過程中將r分成兩個子區間,有序區r 0,i 1 無序區r i,n 1 將當前無序區的第1個記錄,插入到有序區中適當的位置上 每次是有序區增加乙個記錄,知道...

各種排序演算法

交換函式 void swap int a,int b 氣泡排序 氣泡排序 bubble sort,台灣譯為 泡沫排序或氣泡排序 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排...

各種排序演算法

include include include using namespace std void swap int a,int b void output int a,int n 直接插入排序 時間複雜度o n 2 void insertsort int a,int n 折半插入排序 o n 2 只...