直接插入排序和氣泡排序C實現

2021-08-17 08:05:55 字數 1690 閱讀 6113

直接插入排序

1.基本思想:直接插入排序是一種簡單的排序方法,它的基本操作是將乙個記錄插入到已排好序的有序表中,從而得到乙個新的,記錄數加1的有序表。

我們以整形陣列為例,則上面說的記錄可以理解成整形資料。當陣列中只有乙個元素時,則陣列已然有序。若陣列有多個元素,則從第二個元素開始依次查詢待插入的位置,並將待插入的位置與元素位置之前的元素向後移動,然後將待插入的元素插入對應的位置。

2.例子

有資料如下:

12, 9, 38, 6, 25, 14, 3

共7個元素,假設我們已經按公升序排好了前三個元素,即此時序列變為

9, 12, 38, 6, 25, 14, 3

此時我們需將6插入前三個有序資料中,插入過程如下

初始狀態:9, 12, 38, 6

1.9, 12, 6, 38

2.9, 6, 12, 38

3.6, 9, 12, 38

其它元素採用同樣的方法進行排序。最壞情況下,有n-1個元素需進行插入,記錄的移動次數為n(n-1)/2,故時間複雜度為o(n^2);

3.c語言**

void insertsort(int arr, int size)

arr[end + 1] = key;

}}

氣泡排序

1.基本思想將第乙個資料和第二個資料進行比較,若第乙個資料大於第二個,則交換之(公升序)。然後比較第二個資料和第三個資料,依次類推,直至第n-1個記錄和第n個記錄進行比較。上述過程稱為一趟氣泡排序。第一趟氣泡排序把最大的元素放入第n個記錄的位置,第二趟對前n-1個元素進行氣泡排序,把次大的元素放入第n-1個記錄的的位置,依次類推,直到把所有的元素排好序。

2.例子

初始狀態:<12, 9>, 38, 6, 25, 14, 3

1.9, <12, 38>, 6, 25, 14, 3

2.9, 12, <38, 6>, 25, 14, 3

3.9, 12, 6,< 38, 25>, 14, 3

4.9, 12, 6, 25, <38, 14>, 3

5.9, 12, 6, 25, 14,< 38, 3>

6.9, 12, 6, 25, 14, 3, 38

3.c語言**

void bubblesort(int

*arr, int size)

}if (0 == flag)//若某趟排序已使整個陣列有序則結束

return;

}}void swap(int

*left, int

*right)

直接插入排序和氣泡排序比較

思想 將陣列中的所有元素依次和前面的已經排好序的元素相比較 依次 如果選擇的元素比已排序的元素小,則交換,直到全部元素都比較過。實現 sort.h pragma once include using namespace std include 直接插入排序 void insertsort int a...

c 實現直接插入排序

include includeusing namespace std define list init size 100 define listincrement 10 define elemtype int typedef structsqlist 建順序表 void initlist sq sq...

C 實現直接插入排序

直接插入排序在生活中最好的體現就是玩撲克牌,我們理牌的方式是把3和4移動到5的左側,再拿到一張2,把2移到最左側,拿到一張10,放最後邊,再拿到一張7,插入5與10中間。這裡我們的理牌方法就是直接插入排序。話不多說,直接上 這裡一步步給出不同的寫法 include include using nam...