C語言排序演算法總結比較

2021-10-20 12:55:10 字數 1962 閱讀 7935

1.選擇排序法

void

sort

(int

*nums,

int numssize)

} nums[min_index]

=nums[i]

; nums[i]

=min;

}}

2.氣泡排序法

void

sort

(int

*nums,

int numssize)}}

}

3.插入排序法

void

sort

(int

*nums,

int numssize)

nums[j+1]

=temp;}}

}

插入排序改進方法:

(1)插入的位置採用二分查詢法,查詢速度更快

(2)資料的儲存採用鍊錶的方式,可以有效減少資料的移動插入帶來的時間損失

4.希爾排序法

void

sort

(int

*nums,

int numssize)

nums[j+gab]

=temp;}}

}while

(gab>1)

;}

5.快速排序法

void

quicksort

(int nums,

int l ,

int r)

} temp=nums[r]

; nums[r]

=nums[j]

; nums[j]

=temp;

quicksort

(nums,l,j-1)

;quicksort

(nums,j+

1,r);}

return

;}

快速排序的改進方法:將比較位k設定為nums[l]、nums[(l+r)/2]、nums[r],三者中的居中值,這樣可以從一定程度上減少計算量

6、歸併排序

void

merge

(int

*nums,

int l,

int m,

int r)

else

}while

(iwhile

(j}void

mergesort

(int

*nums,

int l,

int r)

}

歸併排序的改進方法:可以將陣列分成若干個有序的子陣列,分別做歸併排序最後再合併

7.堆排序

堆是乙個完全二叉樹、堆中父節點的值一定大於子節點

void

heapify

(int

*nums,

int numssize,

int i)

}void

build_heap

(int

*nums,

int numssize)

}void

heap_sort

(int

*nums,

int numssize)

}

不同排序時間比較

排序演算法比較總結

每次從頭開始 每次結束可以不到最後,因為上一次已經確定最大值在末尾了 比較相鄰兩個數,每次下沉乙個最大值。123 4567 891011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 36 include usingnames...

C語言排序演算法總結

排序演算法一直都是讓我頭疼的演算法。為了全面掌握排序演算法,我就整理了常用的排序演算法。首先我們來了解一些基本概念 1 穩定排序和非穩定排序 簡單地說就是所有相等的數經過某種排序方法後,仍能保持它們在排序之前的相對次序,我們就 說這種排序方法是穩定的。反之,就是非穩定的。比如 一組數排序前是a1,a...

排序演算法總結(C語言)

總結包括 氣泡排序 選擇排序 插入排序 希爾排序 堆排序 歸併排序 快速排序 桶排序 氣泡排序是從後往前 或從前往後 比較相鄰的兩個元素,如果有逆序則交換他們。這樣每趟就將最小 或最大 元素移到待排元素的一端。最多n 1趟,就可以把所有元素排好序。時間複雜度 最好情況 最壞情況 額外空間複雜度 穩定...