1.3快速排序

来源:互联网 发布:金十数据官网 编辑:程序博客网 时间:2024/04/28 12:54
#include<iostream>using namespace std;int a[101],n;//定义全局变量,这两个变量需要在子函数中使用void quicksort(int left,int right){int i,j,t,temp;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){//当哨兵i和哨兵j没有相遇时t=a[i];a[i]=a[j];a[j]=t; } } //最终将基准数归位a[left]=a[i];a[i]=temp;/*这里的归位就是指把a[left]和a[i]交换:temp=a[left];a[left]=a[i];a[i]=temp;*/quicksort(left,i-1);//继续处理左边的,这里是一个递归调用 quicksort(i+1,right);//继续处理右边的,这里是一个递归调用 } int main(){int i,j,t;//读入数据cout<<"请输入共有多少个数,即n="; cin>>n; cout<<"请依次输入n个数:"<<endl; for(i=1;i<=n;i++){cin>>a[i];}quicksort(1,n);//快速排序调用cout<<"排序结果为:"<<endl;for(i=1;i<=n;i++){cout<<a[i]<<" ";}getchar();return 0;}

0 0
原创粉丝点击