八大排序演算法的實現 C語言

2021-10-05 03:26:20 字數 3060 閱讀 3370

1.插入排序

void

insertsort

(int

* arr,

int size)

else

} arr[end +1]

= tmp;

}}

2.希爾排序
void

shellsort

(int

* arr,

int size)

else

} arr[end + gap]

= tmp;}if

(gap ==1)

}}

3.選擇排序
int

swap

(int

* a,

int* b)

void

selectsort

(int

* arr,

int size)

if(arr[max]

< arr[i])}

swap

(&arr[begin]

,&arr[min]);

if(begin == max)

min = max;

swap

(&arr[end]

,&arr[max]);

begin++

; end--;}

}

4.堆排序
int

swap

(int

* a,

int* b)

void

adjustdown

(int

* a,

int n,

int root)

if(a[parent]

< a[child]

)else}}

void

heapsort

(int

* a,

int n)

int end = n -1;

while

(end >0)

}

5.氣泡排序
int

swap

(int

* a,

int* b)

void

bubblesort

(int

* a,

int n)}if

(!flag)

break;}

}

6.快速排序
int

swap

(int

* a,

int* b)

//防止因為資料本來就有序,導致時間複雜度過大

intgetmidindex

(int

* a,

int begin,

int end)

else

}//左右指標法

intpartsort

(int

* a,

int begin,

int end)

while

(begin < end && a[end]

>= key)

swap

(&a[begin]

,&a[end]);

}swap

(&a[begin]

,&a[keyindex]);

return begin;

}//挖坑法

intpartsort2

(int

* a,

int begin,

int end)

a[end]

= a[begin]

;while

(begin < end && a[end]

>= key)

a[begin]

= a[end];}

a[begin]

= key;

return begin;

}//前後指標法

intpartsort3

(int

* a,

int begin,

int end)

cur++;}

++prev;

swap

(&a[prev]

,&a[end]);

return prev;

}void

quicksort

(int

* a,

int begin,

int end)

7.歸併排序
void

_mergesort

(int

* a,

int begin,

int end,

int* tmp)

if(begin1 <= end1)

}else

}memcpy

(a + begin, tmp + begin,

sizeof

(int)*

(end - begin +1)

);}void

mergesort

(int

* a,

int n)

8.計數排序
void

countsort

(int

* a,

int n)

int range = max - min +1;

int* countarr =

(int*)

malloc

(sizeof

(int

)* range)

;memset

(countarr,0,

sizeof

(int

)*range)

;for

(int i =

0; i < n; i++

)int j =0;

for(

int i =

0; i < range;i++)}

}

八大排序演算法的C 實現

include stdafx.h include include include include using namespace std void print vectornumv 輸出陣列 numv.at j 1 v return numv vectorselectionsort vectornu...

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...

八大排序演算法

一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...