整理了常用的一些算法:
一,冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法 。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来 。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成 。
以下代码可以直接运行:
#include <IOStream>using namespace std;template<typename T>//整数或浮点数皆可使用void bubble_sort(T arr[], int len){ int i, j; T temp; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; }}int main(){ int arr[] = { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 }; int len = (int) sizeof(arr) / sizeof(*arr); bubble_sort(arr, len); for (int i = 0; i < len; i++) cout << arr[i] << ' '; cout << endl; float arrf[] = { 17.5, 19.1, 0.6, 1.9, 10.5, 12.4, 3.8, 19.7, 1.5, 25.4, 28.6, 4.4, 23.8, 5.4 }; len = (int) sizeof(arrf) / sizeof(*arrf); bubble_sort(arrf, len); for (int i = 0; i < len; i++) cout << arrf[i] << ' '; return 0;}

文章插图
二、快速排序
快速排序(Quicksort)是对冒泡排序的一种改进 。
快速排序的思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 。
以下代码可以直接运行:
#include <iostream>using namespace std; void Qsort(int arr[], int low, int high){ if (high <= low) return; int i = low; int j = high + 1; int key = arr[low]; while (true) { /*从左向右找比key大的值*/ while (arr[++i] < key) { if (i == high){ break; } } /*从右向左找比key小的值*/ while (arr[--j] > key) { if (j == low){ break; } } if (i >= j) break; /*交换i,j对应的值*/ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } /*中枢值与j对应值交换*/ int temp = arr[low]; arr[low] = arr[j]; arr[j] = temp; Qsort(arr, low, j - 1); Qsort(arr, j + 1, high);} int main(){ int a[] = {57, 68, 59, 52, 72, 28, 96, 33, 24}; Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1);/*这里原文第三个参数要减1否则内存越界*/ for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++) { cout << a[i] << ""; } return 0;}/*参考数据结构p274(清华大学出版社,严蔚敏)*/

文章插图
三,桶排序
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里 。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序) 。桶排序是鸽巢排序的一种归纳结果 。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(
推荐阅读
- 不可不知的网络命令-netstat
- 面包教程 面包怎么做
- 湖南米粉的做法 米粉怎么做
- 附睾结核的治疗方法是什么?
- 客家酿豆腐的做法图片 酿豆腐怎么做
- 睾丸脱皮应该怎样治疗呢?
- 睾丸穿刺的方法步骤是什么?
- 男性肛门长毛怎么回事呢?
- 阳痿怎么办?阳痿的治疗方法
- 三国李肃和李儒 李儒是个怎样的人
