使用说明
该程序段适用于比较几个整数的大小,既可以升序亦可降序。
详细操作请看下文。
一、排序自定义函数
void quicksort(int q[], int l, int r)
{
if (l >= r) return;
int x = q[(l + r) >> 1], i = l - 1, j = r + 1;
while (i < j)
{
do i++; while (q[i] < x);
do j--; while (q[j] > x);
if (i < j) {
int temp = q[i];
q[i] = q[j], q[j] = temp;
}
}
quicksort(q, l, j);
quicksort(q, j + 1, r);
}
二、使用步骤(例题)
1.步骤
代码如下:
#include<stdio.h>
void quicksort(...)
{
...
}
int main()
{
int ...;
scanf("...");
quicksort(...);
...
printf("...");
return 0;
}
2.例题
例:输入六个整数,要求:
1)按照从大到小的顺序排列
2)再按照从小到大的顺序排列
代码如下:
#include <stdio.h>
void quicksort(int q[], int l, int r)
{
if (l >= r) return;
int x = q[(l + r) >> 1], i = l - 1, j = r + 1;
while (i < j)
{
do i++; while (q[i] < x);
do j--; while (q[j] > x);
if (i < j) {
int temp = q[i];
q[i] = q[j], q[j] = temp;
}
}
quicksort(q, l, j);
quicksort(q, j + 1, r);
}
int main() {
int q[6];
printf("请输入6个整数:");
scanf("%d %d %d %d %d %d", &q[0], &q[1], &q[2], &q[3], &q[4], &q[5]);
quicksort(q, 0, 5);
printf("从大到小的排列顺序为: %d %d %d %d %d %d\n", q[5], q[4], q[3], q[2], q[1], q[0]);
printf("从小到大的排列顺序为: %d %d %d %d %d %d\n", q[0], q[1], q[2], q[3], q[4], q[5]);
return 0;
}
运行结果:
总结
以上就是今天要讲的快速排序的内容,本文仅仅简单介绍了利用数组快速排序的使用,而该程序提供了使我们快速便捷地处理数据的函数和方法。