快速排序各种版本(record)
来源:互联网 发布:喷泉动画软件 编辑:程序博客网 时间:2024/06/07 03:57
#include<iostream>using namespace std;#define N 1000000int a[N];//选取枢纽元(3种方法)//1:选左端//int select_pivot(int p, int q)//{//return a[p];//}//2:取中数//void swap_ab(int p, int q)//{//int temp = a[p];//a[p] = a[q];//a[q] = temp;//}//int select_pivot(int p, int q)//{//int m = (p + q) / 2;////m p q;//if (a[m] > a[q])//{//swap_ab(m, q);//}//if (a[p] > a[q])//{//swap_ab(p, q);//}//if (a[m] > a[p])//{//swap_ab(m, p);//}//return a[p];//}//随机枢纽元void swap_ab(int p, int q){int temp = a[p];a[p] = a[q];a[q] = temp;}int select_pivot(int p, int q){int i = p + rand() % (q-p+1);swap_ab(i, p);return a[p];}//双向扫描int partition(int p, int q){int pivot = select_pivot(p, q);/*int i = p + 1, j = q;int t = p;while (i <= j){while (j >= i){if (pivot <= a[j])j--;else{a[t] = a[j];t = j;j--;break;}}while (i <= j){if (pivot >= a[i])i++;else{a[t] = a[i];t = i;i++;break;}}}a[t] = pivot;*/int i = p,j=q+1;while (1){do i++; while (i <= q&&a[i] <= pivot);do j--; while (j >= p+1&&a[j] >= pivot);if (i > j) break;swap_ab(i, j);}swap_ab(j, p);return j;}////单向扫描//int partition(int p, int q)//{//int pivot = select_pivot(p, q);//int i = p;//for (int j = p + 1; j <= q; j++)//{//if (a[j] <= pivot)//{//i++;//swap_ab(j, i);//}//}//swap_ab(i, p);//return i;//}void quicksort(int p,int q){if (p >= q)return;int t = partition(p, q);quicksort(p, t - 1);quicksort(t + 1, q);}int main(){int n;cin >> n;for (int i = 0; i < n; i++){cin >> a[i];}quicksort(0, n-1);for (int i = 0; i < n; i++){cout << a[i] << ' ';}cout << endl;system("pause");return 0;}
0 0
- 快速排序各种版本(record)
- 复习数据结构:排序算法(五)——快速排序的各种版本
- 快速排序(递归版本)
- 快速排序(整型版本)
- 快速排序(递归版本)
- 快速排序(随机化版本)
- 快速排序(随机化版本)
- 各种快速排序算法
- 快速排序学习2(随机化版本)
- 快速排序(C语言版本)
- 快速排序版本一
- 快速排序版本二
- 快速排序(随机化版本)
- 快速排序随机化版本
- 快速排序随机化版本
- 快速排序 java版本
- 快速排序 随机化版本
- 快速排序Java版本
- UDP广播原理简介
- Eclipse或MyEclipse不能编译java文件
- ABAP中ALV使用HTML的例子
- 【基础练习】n&1==0错在哪儿?
- LoadLibrary ErrCode=193 %1 不是合法的Win32 应用程序
- 快速排序各种版本(record)
- linux常用命令
- gitHub上边android studio开发的开源项目转为Eclipse中的项目,个人调试过的可以使用
- httpclient 请求乱码
- android —— 自定义控件 竖向的ViewPager,上下滑动的组件,android上下滑动 VerticalPager
- iOS开发数据库篇—1.SQLite简单介绍
- HEVC帧间预测模式获取
- 一点体会
- ORA-00444: background process DBRM failed while starting