用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 ...