数据结构实验之排序一:一趟快排

来源:互联网 发布:xmind8 for mac破解版 编辑:程序博客网 时间:2024/05/30 04:12

数据结构实验之排序一:一趟快排

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

Problem Description

给定N个长整型范围内的整数,要求输出以给定数据中第一个数为枢轴进行一趟快速排序之后的结果。

 

Input

连续输入多组数据,每组输入数据第一行给出正整数N(N < = 10^5),随后给出N个长整型范围内的整数,数字间以空格分隔。

Output

输出一趟快速排序后的结果,数字间以一个空格间隔,行末不得有多余空格。

Example Input

849 38 65 97 76 13 27 49

Example Output

27 38 13 49 76 97 65 49
一趟快排又称为一次划分,之所以成为一次划分,是因为完成一次快排的过程中,需要与关键字进行比较,在比较的过程中,实际上就完成了一个划分,那就是将大于关键字的和小于关键字的放置在数组的两侧,在用快排的时候,进行的操作是关键字的比较,实际上,我们也可以进行其他操作,比如如果只对数据访问一次完成奇偶数的划分,就可以将条件改为判断偶数,这就是一次划分的意义。
#include <iostream>using namespace std;void once_sort(int a[], int low, int high){int key = a[low];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;}int main(){int n, a[100005];while(cin>>n){for(int i = 0; i < n; i++){cin>>a[i];}once_sort(a, 0, n-1);int i;for(i = 0; i < n-1; i++)cout<<a[i]<<" ";cout<<a[i]<<endl;}return 0;}


原创粉丝点击