資料結構重要排序演算法總結

2021-10-11 05:07:14 字數 2851 閱讀 2365

排序思想:

將待排序的記錄ri;,插入到已排好序的記錄表r1,

r2,····ri-1中,得到乙個新的、記錄數增加1的有序表。

直到所有的記錄都插入完為止。

設待排序的記錄順序存放在陣列r[1···n]中,在排

序的某一時刻,將記錄序列分成兩部分:

r[1···i-1]:已排好序的有序部分;

r[1···n]:未排好序的無序部分。

顯然,在剛開始排序時,r[1]是 已經排好序的。

void

straight_insert_sort

(sqlist *l)

l->r[j+1]

=l->r[0]

;//插入到相應位置

}}

當將待排序的記錄r[i]插入到已排好序的記錄子

表r[1···i-1]中時,由於r1,r2,···ri-1已排好序,

則查詢插入位置可以用「折半查詢」實現,則直接插入

排序就變成為折半插入排序。

void

binary_insert_sort

(sqlist *l)

else

//查詢位置

for(j= i-

1; j>=high+

1;j--

) l->r[high+1]

= l->r[0]

//插入到相應位置}}

}

希爾排序(shell sort,又稱縮小增量法)是一種分組插入排序方法。

1排序思想

①先取乙個正整數d1(d1int

main

(void

)shellsort

(a, len)

;// 呼叫希爾排序函式

printf

("希爾公升序排列後結果為:\n");

for(i =

0; i < len; i++

)printf

("\n");

return0;

}void

shellsort

(int

*a,int len)

a[k + gap]

= tmp;}}

}}

void

bubble_sort

(sqlist *l)}if

(flag == true)

}}

#include

void

swap

(int arr,

int low,

int high)

intpartition

(int arr,

int low,

int high)

swap

(arr, low, high)

;while

(low < high && arr[low]

<= base)

swap

(arr, low, high);}

return low>=base?low:low+1;

}void

quicksort

(int arr,

int low,

int high)

}int

main()

printf

("\n");

quicksort

(arr,

0, n-1)

;for

(j =

0; j < n; j ++

)return0;

}

/* 將sr[s..t]歸併排序為tr1[s..t] */

void

msort

(int sr,

int tr1,

int s,

int t)

}/* 將有序的sr[i..m]和sr[m+1..n]歸併為有序的tr[i..n] */

void

merge

(int sr,

int tr,

int i,

int m,

int n)

if(i

if(j<=n)

}/* 對順序表l作歸併排序 */

void

mergesort

(sqlist *l)

void

heapify

(int tree,

int n,

int i)

int c1=

2* i+1;

//左孩子

int c2=

2*i+2;

//右孩子

總結資料結構中重要的排序演算法

1 直接插入排序 適合資料較小且資料較有序的數字序列。演算法思想 將乙個陣列先劃分成已排序好的部分和未排序好的部分,從未排序好的部分中獲取乙個關鍵數作為待排序數,在 已 排好序的序列中找到合適位置插入這個資料。需要乙個中間變數tmp存放每次獲取的關鍵數。程式 如下 void insertsort i...

資料結構排序演算法總結

常用的演算法有插入排序 氣泡排序 選擇排序 快速排序 歸併排序 希爾排序 堆排序 計數排序和基數排序。下面對著九種常見排序方法進行總結 排序方法 時間複雜度 空間複雜度 個人評價 插入排序 o n 2 o 1 選擇排序 氣泡排序 希爾排序 o n log n 快速排序 o log n 歸併排序 o ...

資料結構 排序演算法總結

1 二路歸併排序 二路歸併排序 思路 利用分治思想,對原陣列進行二分分段,使元素在每一小段內有序,然後逐漸合併 如,最小分段是2,先2內有序,合併為4,4內有序。時間複雜度 o nlogn 空間複雜度 o n 需要乙個額外的陣列作為臨時儲存 static void mergesort int arr...