c語言排序方法彙總

2021-10-19 07:10:30 字數 2609 閱讀 8358

先更新到這裡,之後會持續更新 三連再看,月入百萬。

在接下來的排序方法中,我們都採用4 1 2 6 5 3這個數列作為我們的栗子41

2653

1124

5362

1243

5631

2345

6412

3456

5123

456氣泡排序的本質就是每次將前n-i個數中的最大值換到第n-i+1位上去

**如下

for

(int i=

1; i<=n; i++

)

優點:寫起來簡單

缺點:運算量過大每兩個之間就要比較一次

選擇排序的重點在於設定乙個基準值,將數列分為大於基準值和小於基準值的兩個部分,再對兩個部分重複操作,遞迴求解,這裡將初始基準值設為241

2653

1214

6532

1243

5631

23456第一

次:1−

6第二次

:1−2

3−6第

三次:3

−45−

6第一次:1-6\\ 第二次 :1-2 \quad 3-6\\ 第三次: 3-4 \quad5-6

第一次:1−

6第二次

:1−2

3−6第

三次:3

−45−

6

void

quicksort

(int left,

int right)}if

(iquicksort

(i,right);if

(j>left)

quicksort

(left, j)

;}

優點:執行速度較快

缺點:不穩定,在一些情況下可能會較慢(但肯定比冒泡快很多)

即從n個數中取出最小的數,和第一位的數進行 交換,再對n-1個數重複操作41

2653

1142

6532

1246

5331

2346

5412

3465

5123

456這種方法其實和冒泡的差別不大,只是減少了交換的次數,對冒泡進行了優化。

void

choosesort()

}swap

(&a[i]

,&a[minx]);

}}

即將數列分為兩個數列,乙個為有序的,另乙個為無序

初始4 1 2 6 5 3

不斷將無序的數列插入到有序的數列中去

41 2 6 5 3

1 42 6 5 3

以此類推41

2653

1426

5312

4653

1245

6312

3456

void

straightsort

(int len)

a[j +1]

= tmp;

}}

優點:插入排序在陣列量較小,資料較為整齊時速度較快

缺點:不穩定,若是出現較小的數字在靠後的位置,則會增加運算的複雜性(所以出現了希爾(shell)排序

為了更好的說明希爾排序,我們是用一組較為極端的資料

7 4 3 2 5 6 1 8

如果進行插入排序,如下74

3256

1847

3256

1834

7256

1823

4756

1823

4576

18…手累了-_-

我們要進行很多次的插入,比較,交換…所以不如先交換一些資料,使得陣列更加整齊74

3256

1814

3256

78有序性大大提高,便於插入排序

在希爾排序中,我們從陣列中按照一定的間距取出乙個陣列,對它進行排序,直至最終間距為1,即正常的插入排序

按照一定的間隔進行插入排序

void

insert

(int start,

int gap,

int len)

a[j+gap]

=temp;

}}

讓初始值為len

2\frac

2len

​,再不斷縮小

void

shellsort

(int len)}}

// 完整版的shell排序

void

shellsort

(int

* a,

int len)

a[j]

=tmp;

}}

優化了插入排序

C語言常見幾種排序彙總

c 語言排序 氣泡排序 void mao int a,int n 快排 void quicksort int a,int n 從前往後搜尋比val大的元素,找到後填到a j 中並跳出迴圈 for iif a i val a i val 將儲存在val中的數放到a i 中 quicksort a,i ...

排序方法彙總

氣泡排序是非常容易理解和實現,以從小到大排序舉例 設陣列長度為n。1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,如果n不為0就重複前面二步,否則排序完成。按...

排序演算法彙總 C語言版

首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾,重複操作。演算法分析 第一輪比較是陣列中的第乙個元素與其他的元素一 一對比,只要找到比它小的,它兩就交換順序,所以第乙個相對於已經進行比較過的元素而言是最小的,繼續比...