經典排序演算法C 實現

2021-07-11 05:41:59 字數 1343 閱讀 3025

用c++實現了經典的氣泡排序、插入排序、選擇排序、堆排序、快速排序、希爾排序、歸併排序。等空閒的時候再補充每個排序演算法的思想以及易錯點。

//氣泡排序

void bubble_sort(vector

arr, int n)

}if(swaped == 0)

break;

else

swaped = 0;

}}//插入排序

//without sentinel

void insert_sort(vector

arr, int n)

a[j+1] = temp;

}}//with sentinel(有哨兵的插入排序)

/*void insert_sort(vector&a, int n)

a[j+1] = a[0];

}}*///選擇排序

void selection_sort(vector

arr, int n)

}if(min_pos != i)

}}//快速排序

void quick_sort(vector

&a, int left, int right)

int key = a[left];

int low=left;

int high=right;

while(low < high)

a[low] = key;

quick_sort(a, left, low-1);

quick_sort(a, low+1, right);

}//歸併排序

void my_merge(vector

&a, int low, int high, int mid)

else

}while(i<=mid) vec.push_back(a[i++]);

while(j<=high) vec.push_back(a[j++]);

//易錯點,歸併後的vec要複製到a對應的位置上去,不能簡單直接賦值

for(int k = 0; kvoid merge_sort(vector

&a, int left, int right)

//堆排序

void max_heapify(vector

&arr, int i, int heap_size)

}void build_heap(vector

&arr)

void heap_sort(vector

&a)

}//希爾排序

void shell_sort(vector

&arr)

}

經典排序演算法(C 實現)

氣泡排序 public static int bubblesort int array return array 選擇排序 1.從左至右遍歷,找到最小 大 的元素,然後與第乙個元素交換。2.從剩餘未排序元素中繼續尋找最小 大 元素,然後與第二個元素進行交換。3.以此類推,直到所有元素均排序完畢。pu...

經典排序演算法C 實現

void insert vector a 直接插入排序 void insert vector a 氣泡排序 void pick vector a swap a i a idx 直接選擇排序 void merge vector ans,int l,int mid,int r while i mid t...

C 實現所有經典排序演算法

c 實現所有經典排序演算法 1 選擇排序 希爾排序 public class shellsorter arr j 1 t static void main string args shellsorter s new shellsorter s.sort array foreach int m in ...