开发者社区> 问答> 正文

输入10个数,用递归算法实现快速排序

输入10个数,用递归算法实现快速排序

展开
收起
知与谁同 2018-07-22 10:15:42 1691 0
4 条回答
写回答
取消 提交回答
  • #include<iostream>
    using namespace std;

    int a[10];

    void qsort(int l,int r)
    {
    int i=l,j=r,m=a[l],p;
    do
    {
    for(;a[i]>m;i++);
    for(;a[j]<m;j--);
    if(i<=j)
    {
    p=a[i];
    a[i]=a[j];
    a[j]=p;
    i++;
    j--;
    }
    }while(i<=j);
    if(l<j)
    qsort(l,j);
    if(i<r)
    qsort(i,r);
    }

    int main()
    {
    for(int i=1;i<=10;cin>>a[i],i++);
    qsort(1,10);
    for(int i=1;i<=10;cout<<a[i]<<endl,i++);
    return 0;
    }
    2019-07-17 22:50:42
    赞同 展开评论 打赏
  • 这个是快速排序算法函数,输入输出楼主自定吧。
    void qsort(int v[], int left, int right) {
    int i, last;
    void swap(int v[], int i, int j);
    if (left >= right)
    return ;
    swap(v, left, (left + right)/2);
    last = left;
    for (i=left+1; i<=right; i++)
    if (v[i]<v[left])
    swap(v, ++last, i);
    swap(v, left, last);
    qsort(v, left, last-1);
    qsort(v, last+1, right);
    }

    void swap(int v[], int i, int j) {
    int temp;
    temp = v[i];
    v[i] = v[j];
    v[j] = temp;
    }

    -------------------------

    int a[10];

    qsort(a, 10);

    void qsort(int* arr,int n)
    {
    if(n <= 1)
    {
    return;
    }
    if(arr[n] > arr[n-1])
    {
    int temp = arr[n];
    arr[n] = arr[n-1];
    arr[n-1] = temp;
    }
    qsort(arr, n -1);
    }

    2019-07-17 22:50:42
    赞同 展开评论 打赏
  • #include<iostream> using namespace std; int a[10001]; void qs(int s,int e) { int x=a[s],l=s,r=e;//以第一个数为参照做比较 if(l>=r)return; while(l<r) { while(l<r&&a[r]>=x) r--; //不小于分界值的留在右边,遇到小于的停止 a[l]=a[r]; while(l<r&&a[l]<=x) l++; //小于分界值的留在左边,遇到不小于的停止 a[r]=a[l]; } a[r]=x; qs(s,r-1); qs(r+1,e);//递归 } int main() { int i,n; cin>>n; //输入要排序的数组元素个数即 数组长度 for(i=0;i<n;i++) cin>>a[i]; //输入数组元素 qs(0,n-1); //执行排序函数 for(i=0;i<n;i++) //输出排序后结果 cout<<a[i]; system("pause"); }
    2019-07-17 22:50:42
    赞同 展开评论 打赏
  • 杀人者,打虎武松也。
    #include<iostream>
    using namespace std;
    int a[10];
    void qs(int s,int e)
    {
    int x=a[s],l=s,r=e;//以第一个数为参照做比较
    if(l>=r)return;
    while(l<r)
    {
    while(l<r&&a[r]>=x)
    r--; //不小于分界值的留在右边,遇到小于的停止
    a[l]=a[r];
    while(l<r&&a[l]<=x)
    l++; //小于分界值的留在左边,遇到不小于的停止
    a[r]=a[l];
    }
    a[r]=x;
    qs(s,r-1);
    qs(r+1,e);//递归
    }
    int main()
    {
    int i;
    for(i=0;i<10;i++)
    cin>>a[i]; //输入数组元素
    qs(0,9); //执行排序函数
    for(i=0;i<10;i++) //输出排序后结果
    cout<<a[i];
    system("pause");
    }
    2019-07-17 22:50:42
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载