各種排序演算法C 實現

2021-09-28 20:16:30 字數 2187 閱讀 7579

#include

#include

#include

using

namespace std;

//插入排序

void

insertsort

(int

* num,

int len)}}

//氣泡排序

void

bubblesort

(int

* num,

int len)}if

(!flag)

break;}

}//選擇排序

void

selectsort

(int

* num,

int len)}}

//快速排序 挖坑分治法,通過挖坑將資料分為兩塊(先從右往左挖)

void

quicksort

(int

* num,

int left,

int right)

//一次排序完畢,將key的位置確定

num[i]

= key;

quicksort

(num, left,i-1)

;quicksort

(num, i+

1,right);}

}//希爾排序

//分為n個gap,每個gap插入排序

void

shellsort

(int

* num,

int len)}}

}//歸併排序 分為sort過程和merge過程

//merge過程,將兩個有序陣列有序放入temp陣列,然後拷貝到原陣列

void

merge

(int

* num,

int left,

int mid,

int right,

int* tmp)

while

(i<= mid)

tmp[t++

]= num[i++];

while

(j<= right)

tmp[t++

]= num[j++];

t =0;

//將輔助陣列tmp拷貝到num

while

(left <= right)

num[left++

]= tmp[t++];

}void

mergesort

(int

* num,

int left,

int right,

int* tmp)

}//堆排序

//思路:

//a.將無需序列構建成乙個堆,根據公升序降序需求選擇大頂堆或小頂堆;

//b.將堆頂元素與末尾元素交換,將最大元素"沉"到陣列末端;

//c.重新調整結構,使其滿足堆定義,然後繼續交換堆頂元素與當前末尾元素,反覆執行調整+交換步驟,直到整個序列有序。

//調整大根堆

void

adjustheap

(int

* num,

int left,

int right)

else

break;}

//將temp值放到最終的位置

num[left]

= temp;

}//堆排序

void

heapsort

(int

* num,

int len)

}int

main()

;//sort(num,num+10);

//insertsort(num,10);

//bubblesort(num,10);

//selectsort(num,10);

//quicksort(num,0,9);

//shellsort(num,10);

//int tmp[11];

//mergesort(num,0,9,tmp);

//heapsort(num,10);

for(

int i=

0; i<

10; i++

) cout<<<

" ";

cout

}

各種排序演算法C 實現

各種排序演算法的實現 交換函式 void swap int list,int low,int high 小於函式 bool lt const int low,const int high 插入排序 穩定 原理 插入排序逐個處理待排序的記錄。每個新記錄與前面已排序的子串行進行比較,將它插入到子串行中正...

各種排序演算法及其C 實現

基本思想 每次將乙個待排序的資料元素,插入到前面已經排好序的數列中的適當位置,使數列依然有序 直到待排序資料元素全部插入完為止。基本思想 每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完為止。基本思想 兩兩比較待排序資料元素的大小,發...

各種排序演算法的C 實現

include include include include include include using namespace std void bubble vector a 氣泡排序 void insert vector a 插入排序 void shellsort vector a 希爾排序 i...