排序
来源:互联网 发布:淘宝怎么寄售游戏币 编辑:程序博客网 时间:2024/06/16 19:13
#include<iostream>using namespace std;void shellsort(int a[], int n){ int j, gap; for (gap = n / 2; gap > 0; gap /= 2) //每次步数/2直到除为1 for (j = gap; j < n; j++) //这里j的初始值是挨个取,用下边的插入排序可以直接跟本组前面的比较 if (a[j] < a[j - gap]) { int temp = a[j]; int k = j - gap; while (k >= 0 && a[k] > temp) //找到合适的位置 { a[k + gap] = a[k]; k -= gap; } a[k + gap] = temp; //插入 }}void quicksort(int s[], int l, int r){ if (l < r) { int i = l, j = r, x = s[l]; while (i < j) { while(i < j && s[j] >= x) // 从右向左找第一个小于x的数 j--; if(i < j) //如果合适 {s[i++] = s[j];} //将那个数换到i指针上,然后再 while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数 i++; if(i < j) s[j--] = s[i]; } s[i] = x; quicksort(s, l, i - 1); quicksort(s, i + 1, r); }}void Bubblesort(int a[],int n){ for(int i=0;i<n;i++) for(int j=1;j<n-i;j++) { if(a[j]<a[j-1]) { int tmp=a[j]; a[j]=a[j-1]; a[j-1]=tmp; } }}int main(){ int a[100],b[100],c[100];//用于shell,快速,冒泡排序的数组 int n; cout<<"数组大小和值"; cin>>n; for(int i=0;i<n;i++) {cin>>a[i];b[i]=a[i];c[i]=a[i];} shellsort(a,n); cout<<"希尔排序"; for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; quicksort(b,0,n-1); cout<<"快速排序"; for(int i=0;i<n;i++) cout<<b[i]<<" "; cout<<endl; Bubblesort(c,n); cout<<"冒泡排序"; for(int i=0;i<n;i++) cout<<c[i]<<" "; cout<<endl; return 0;}
0 0
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- Android必考面试题之一——Activity的生命周期以及流程图
- 函数调用原理——栈帧
- MPAndroidChart的文档翻译
- 熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作
- 在VS中配置opencv库
- 排序
- Linux下用breakpad抓取C++程序崩溃报告
- Git 常用命令(持续补充中...)
- Android开发04_ContentProvider内容提供者
- Write code that is easy to delete, not easy to extend.
- Android百度地图开发(一)之Hello BaiduMap
- 排序算法(三) - 交换排序
- scala程序写Spark程序实现黑名单过滤
- LeetCode 437 Path Sum III