1:排序
①冒泡,最简单的排序,以从小到大为例,逻辑就是将值更大的元素放在数列的后面,通过交换实现。
//冒泡排序 #includeusing namespace std; void BubbleSort(int* arr, int n) { int i , j , temp =0; for (i=0; i < n - 1; i++) { for (j=0; j < n - 1 - i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } }
②快排,先从数列中取出一个数作为基准值;分区过程中,将比这个数大的数全放在它的右边,比这个数小的全放在它的左边;再对左右分区重复第二步,直到各区间只有一个数。
//双向快速排序 #includeusing namespace std; void QuickSort(int* arr,int left, int right) { if (left > right) { return; } int i = left; int j = right; //最左边的为准基数 int flag = arr[left]; while (i != j) { //从右侧找到一个比标记小的值 while (arr[j] > flag && i < j) { j--; } //从左侧找到一个比标记大的值 while (arr[i] <= flag && i < j) { i++; } //交换找到的值,使左边小,右边大 int temp = 0; if (i ③插入排序 ,将待排序的元素看为一个有序表和一个无序表,开始时无序表只包含一个元素,无序表包含n-1个元素;排序过程中每次从无序表中取出第一个元素,将它与有序表元素依次比较,插入有序表中的合适位置;重复第二步,直到无序表不存在元素。(for循环加while排序)
#includeusing namespace std; //元素集合接近有序时,直接插入排序效率较高. //直接插入排序,顺序查找 void Insertion_Sort(int* arr, int n) { int i = 0, flag = 0, step = 0; for (i = 1; i < n; i++) { flag = arr[i]; step = i - 1; while (step >= 0 && flag> 1;// >>1 相当于 /2 if (key= left) { arr[right + 1] = arr[right]; right--; } //插入元素 arr[left] = key; } } ④选择排序:在待排序的元素中找到最小的元素放在序列的首位置,找到最大的元素放在序列的末尾,然后抛开首位和末尾,继续重复该步骤,直到排序完毕。(使用双指针)
//直接选择排序 #includeusing namespace std; void swap(int *a, int *b){ int ret = 0; ret = *a; *a = *b; *b = ret; } void SelectionSort(int* arr, int size) { int left = 0; int right = size - 1; int i = 0; while (left arr[i]) MinIndex = i; if (arr[MaxIndex] ⑤归并排序
⑥堆排序
⑦希尔排序
⑧计数排序
八大经典排序正在上传…重新上传取消https://blog.csdn.net/lexiaoyao_0000/article/details/102466756https://blog.csdn.net/lexiaoyao_0000/article/details/102466756



