用顺序表作存储结构,输入一组数据,用快速排序法对其进行排序。
从事西信服务器托管,服务器租用,云主机,虚拟空间,域名注册,CDN,网络代维等服务。顺序表的类型描述:
#define MAXSIZE 50 // MAXSIZE为大数据元素数目
typedef int ElemType;
typedef struct
{ ElemType r[MAXSIZE +1]; // r[0]闲置或另作它用
int length;
}SqList;
输入格式:第一行输入一个整数n,表示顺序表的元素个数。
第二行行输入原始序列的n 个整数。
输出格式:在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。
输入样例:8
19 -18 13 26 275 26 7 35
输出样例:-18 7 13 19 26 26 35 275
代码如下:
#include#define MAXSIZE 50 // MAXSIZE为大数据元素数目
typedef int ElemType;
typedef struct {
ElemType r[MAXSIZE + 1]; // r[0]闲置或另作它用
int length;
} SqList;
void Quick(int *p, int left, int right);
int main() {
SqList sq;
int n;
scanf("%d", &n);
for (int i = 0; i< n; i++) {
scanf("%d", &sq.r[i]);
}
int left = 0;
int right = n - 1;
Quick(sq.r, left, right);
for (int i = 0; i< n; i++) {
if (i == 0){
printf("%d",sq.r[i]);
} else {
printf(" %d",sq.r[i]);
}
}
return 0;
}
void Quick(int *p, int left, int right) {
if (left >= right) {
return;
}
int point = p[left];
int head = left, tail = right;
while (head< tail) {
while (p[tail] >= point) {
tail--;
}
if(head< tail){
p[head] = p[tail];
head++;
}
while (head< tail && p[head]< point) {
head++;
}
if (head< tail) {
p[tail] = p[head];
tail--;
}
}
p[head] = point;
Quick(p, left, head - 1);
Quick(p, head + 1, right);
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧