排序算法
来源:互联网 发布:linux 拷贝整个文件夹 编辑:程序博客网 时间:2024/06/05 02:10
主程序:
#include <iostream>using namespace std;#include <ctime>void sort(int* a, int n);int main(){const int N=10240;int a[N];for(int i=0; i<N; i++)a[i] = N-i;for(int i=0; i<10; i++)cout << a[i] << ' ';cout << endl;clock_t t1 = clock();sort(a,N);clock_t t2 = clock();cout << double(t2-t1)/CLOCKS_PER_SEC << endl;for(int i=0; i<10; i++)cout << a[i] << ' ';cout << endl;}
冒泡排序:
#include <algorithm>using std::swap;void sort(int* a, int n){bool changed;do{changed = false;for(int i=1; i<n; i++){if(a[i]<a[i-1]){swap(a[i],a[i-1]);changed = true;}}--n;}while(changed);}插入排序:
void sort(int* a, int n){int j;for(int i=1; i<n; i++){int t = a[i];for(j=i;j>0&&t<a[j-1];j--)a[j]=a[j-1];a[j] = t;}}选择排序:
#include <algorithm>using std::swap;void sort(int* a, int n){//反复n-1次for(int i=0; i<n-1; i++){//第i次从第i~n个数据中找到最小元素是谁int min = i;for(int j=i+1; j<n; j++)if(a[j]<a[min])min = j;//把它跟第i个元素交换swap(a[min],a[i]);}}/*优化void sort(int* a, int n){//反复n-1次for(int i=1; i<n; i++){//第i次从第i~n个数据中找到最小元素是谁int min = i-1;for(int j=i; j<n; j++)if(a[j]<a[min])min = j;//把它跟第i个元素交换swap(a[min],a[i-1]);}}*/
快速排序:
#include <algorithm>using std::swap;void sort(int* a, int n){if(n<=1) return;if(n==2){if(a[1]<a[0]) swap(a[1],a[0]);return;}swap(a[n/2],a[0]);//返回的时候a[0]所指向的地址已经改变int jie=a[0];int* L=a+1;int* R=a+n-1;while(L<R){while(L<R&&*L<jie) ++L;while(a<R&&!(*R<jie)) --R;if(L<R) swap(*L,*R);}if(*R<jie) swap(*R,a[0]);sort(a, R-a);sort(R+1,n-1-(R-a));}
0 0
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 关于使用OKHttp调试自签名证书进行双向认证的一些看法
- noip2006T4 2^k进制数(组合数学+高精度)
- 使用Android Studio检测内存泄露
- 【日常被虐】【XJOI】NOIP2016提高组冲剌题1
- How to Switch the Driving Table in a Hash Join (文档 ID 171940.1)
- 排序算法
- Kubernetes入门概念
- 如何表现营销型网站的互动性?
- 服务器端socket使用流程
- 7、认识bashshell
- 谈谈Objective-C的警告
- char和varchar的区别
- 集趣(及时通讯聊天)
- while,do while循环结构