数据结构-排序-快速排序(递归)

Description
 创建一个一维数组,指定该一维数组的大小n,输入数组的n个元素,按指定算法(快速排序)对数组排序,并输出结果。
Input 
 仅有一组测试数据
第一行:输入一个整数n表示数组的长度(1<n<1000)
第二行:输入n个整数,整数之间用空格分隔

Output 
输出n个排序后的整数,整数之间用空格分隔
 
Sample Input
5
56 67 23 34 45 

Sample Output
23 34 45 56 67
 
Hint
输出有换行
#include <iostream>
#define Maxsize 1005
using namespace std;
// 顺序存储结构
typedef struct Keynode
{
    int key;
} Keynode;
typedef struct
{
    Keynode *R;
    int length;
} Sqlist;
void initQ(Sqlist &L)
{
    L.R = new Keynode[Maxsize + 1];
}
void creatQ(Sqlist &L, int n)
{
    L.length = n;
    for (int i = 1; i <= n; i++)
    {
        cin >> L.R[i].key;
    }
}
int partition(Sqlist &L, int low, int high)
{                      // 分左右两部分进行操作
    L.R[0] = L.R[low]; // 0下标记录中心值
    int pivotkey = L.R[low].key;
    while (low < high)
    {                                                   // 从右开始判断
        while (low < high && L.R[high].key >= pivotkey) // 条件带等号
        {                                               // 把高的部分换到低位
            high--;
        }
        L.R[low] = L.R[high];
        while (low < high && L.R[low].key <= pivotkey)
        { // 把低部分换到高位
            low++;
        }
        L.R[high] = L.R[low];
    } // 相等时结束low为标志位
    L.R[low].key = L.R[0].key;
    return low;
}
void Qsort(Sqlist &L, int low, int high)
{ // 递归进行排序
    if (low < high)
    {
        int pivotloc = partition(L, low, high);
        Qsort(L, low, pivotloc - 1);
        Qsort(L, pivotloc + 1, high);
    }
}
void PrintQ(Sqlist L)
{ // 输出
    for (int i = 1; i <= L.length; i++)
    {
        cout << L.R[i].key;
        if (i != L.length)
        {
            cout << " ";
        }
    }
    cout << "\n";
}
int main()
{
    Sqlist L;
    int n;
    cin >> n;
    initQ(L);
    creatQ(L, n);
    Qsort(L, 1, L.length);
    PrintQ(L);
    return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值