冒泡排序、选择排序、插入排序、希尔排序、快速排序、基数排序
来源:互联网 发布:php mysql apache 编辑:程序博客网 时间:2024/05/16 13:02
#include<iostream>using namespace std;void BubbleSort(int *a, int n){int flag = 1; //添加标志位for (int i = 1; i < n && flag == 1; i++){flag = 0;for (int j = 0; j < n - i; j++){if (a[j] > a[j + 1]){int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;flag = 1; //交换成功}}if (flag == 1){cout << "第" << i << "次排序的结果是:";for (int i = 0; i < n; i++){cout << a[i] << " ";}}cout << endl;}}void selectSort(int a[], int n){int flag = 1; //添加标志位for (int i = 0; i < n - 1 && flag==1; i++){flag = 0;for (int j = i+1; j < n; j++){if (a[i] > a[j]){int temp = a[i];a[i] = a[j];a[j] = temp;flag = 1; //交换成功}}if (flag == 1){cout << "第" << i+1 << "次排序的结果是:";for (int i = 0; i < n; i++){cout << a[i] << " ";}}cout << endl;}}void insertSort(int *a, int n){int i;//扫描次数int j;//以j定位比较的元素for ( i = 1; i < n; i++){int temp;temp = a[i];j = i - 1;while (j >= 0 && a[j] > temp ){a[j + 1] = a[j];j--;}a[j + 1] = temp;cout << "第" << i << "次排序的结果是:";for (int i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;}}void shellSort(int a[], int n){int i =1;//扫描次数int j;//以j定位比较的元素int k = 1;//打印次数int temp;int jmp;jmp = n / 2;while (jmp != 0){for ( i = jmp; i < n; i++){temp = a[i];j = i - jmp;while (temp < a[j] && j >= 0){a[j + jmp] = a[j];j = j - jmp;}a[j + jmp] = temp;}cout << "第" << k++ << "次排序:";for (int i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;/****容易忽略掉****/jmp = jmp / 2; //控制循环次数}}void quickSort(int *a, int n, int left, int right){int i, j, t, temp;static int k = 1;if (left>right)return;temp = a[left]; //temp中存的就是基准数 i = left;j = right;while (i != j){//顺序很重要,要先从右边开始找 while (a[j] >= temp && i<j)j--;//再找左边的 while (a[i] <= temp && i<j)i++;//交换两个数在数组中的位置 if (i<j){t = a[i];a[i] = a[j];a[j] = t;}}//最终将基准数归位 a[left] = a[i];a[i] = temp;cout << "第" <<k++ << "次排序:";for (int i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;quickSort(a, n, left, i - 1);//继续处理左边的,这里是一个递归的过程 quickSort(a, n, i + 1, right);//继续处理右边的 ,这里是一个递归的过程 }void quicksort(int *a, int n, int left, int right){static int k = 1;if (left < right){int key = a[left];int low = left;int high = right;while (low < high){while (low < high && a[high] >= key){high--;}a[low] = a[high];while (low < high && a[low] <= key){low++;}a[high] = a[low];}a[low] = key;cout << "第" << k++ << "次排序:";for (int i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;quicksort(a, n, left, low - 1);quicksort(a, n, low + 1, right);}}void radixSort(int *a, int size) //基数排序{for (int n = 1; n <= 100; n=n*10) //n为基数,从个位数开始排序{int tmp[10][100] = { 0 };for (int i = 0; i < size; i++){int m = (a[i] / n) % 10;tmp[m][i] = a[i];}int k = 0;for (int i = 0; i < 10; i++){for (int j = 0; j < size; j++){if (tmp[i][j] != 0){a[k] = tmp[i][j];k++;}}}cout << "经过" << n << "位数排序后:";for (int i = 0; i < size; i++){cout << a[i] << " ";}cout << endl;}}int main(){int a[6] = { 4, 6, 1, 8, 13, 18 };cout << "冒泡排序:" << endl;BubbleSort(a, 6);int b[6] = { 4, 6, 1, 8, 13, 18 };cout << "选择排序:" << endl;selectSort(b, 6);int c[6] = { 4, 6, 1, 8, 13, 18 };cout << "插入排序:" << endl;insertSort(c, 6);int d[6] = { 4, 6, 1, 8, 13, 18 };cout << "希尔排序:" << endl;shellSort(d, 6);int e[10] = { 41, 89, 92, 42, 70, 34, 9, 10, 90, 70 };cout << "快速排序:" << endl;quicksort(e, 10, 0, 9);int f[12] = { 26,95,7,34,60,168,171,259,372,45,88,133 };cout << "基数排序:" << endl;radixSort(f, 12);return 0;}
阅读全文
0 0
- C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序
- 冒泡排序、选择排序、插入排序、希尔排序、快速排序、基数排序
- 各种排序算法总结----基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 各种常见的排序,冒泡排序,选择排序,插入排序,希尔排序,堆排序,快速排序,基数排序,桶排序
- 排序算法----冒泡排序+插入排序+选择排序+快速排序+希尔排序+堆排序+归并排序+计数排序+基数排序+桶排序(c语言)
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- 冒泡排序 快速排序 选择排序 堆排序 直接插入排序 希尔排序 归并排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序
- 冒泡排序,插入排序,快速排序,归并排序,堆排序,选择排序,希尔排序
- 冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序六大排序大总结
- Python 排序 冒泡排序 希尔排序 快速排序 插入排序 选择排序 归并排序
- C++算法 冒泡排序,快速排序,插入排序,希尔排序,计数排序,基数排序 性能比较
- 快速排序 选择排序 插入排序 冒泡排序 堆排序 归并排序 基数排序
- 各种排序算法实现——基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序
- 数据结构第三周项目一
- java创建文件到本地
- github创建仓库步骤
- Matplotlib数据可视化
- nodejs模块小例子
- 冒泡排序、选择排序、插入排序、希尔排序、快速排序、基数排序
- tp5目录详情及其新特性
- MOOC清华《面向对象程序设计》第8章:栈的实现(基于STL vector)
- Coin 2017 西安网络赛 快速幂 + 二项式定理
- 关于苹果Xcode编译器与Bitcode
- c#6新特性-插补字符串
- 对负荷数据进行小波去噪,整理
- 20170916导出fuck 7654导航
- 170916 逆向-WHCTF(BabyRe/CrackMe)