利用快速排序进行将数组序列从小到大排序

1 题目

功能:快速排序
描述:利用快速排序进行将数组序列从小到大排序

2 思路

在待排序的n个数据中取第 1 个数据作为基准值,将所有记录分为 3 组
使笫一组中各数据值均小于或等于基准值,第二组做基准值的数据,第三组中各数据值均人于或等于基准值,这便实现了第一趟分割,然后再对第一组和第三组分别重复上述方法。
依次类推;直到每组中只有一个记录为止

3 代码

#include <stdio.h> 
#include <stdlib.h>

/**
功能:快速排序
描述:利用快速排序进行将数组序列从小到大排序
**/

void qusort(int s[], int start, int end) {                  // 自定义函数qusort()

    int i, j;                                               // 定义变量为基本整型
    i = start;                                              // 将每组首个元素赋给i
    j = end;                                                // 将每组末尾元素赋给j
    s[0] = s[start];                                        // 设置基准值
    while (i < j){
        while (i < j && s[0] < s[j])
            j--;                                            // 位置左移
        if (i < j){
            s[i] = s[j];                                    // 将s[j]放到s[i]的位置上
            i++;                                            // 位置右移
        }
        while (i < j && s[i] <= s[0])
            i++;                                            // 位置右移
        if (i < j){
            s[j] = s[i];                                    // 将大于基准值的s[j]放到s[i]位置
            j--;                                            // 位置右移
        }
    }
    s[i] = s[0];                                                // 将基准值放入指定位置
    if (start < i)
        qusort(s, start, j - 1);                                // 对分割出的部分递归调用函数qusort()
    if (i < end)
        qusort(s, j + 1, end);
}

int main(int argc, char const *argv[]) {
    int a[11], i;                                               // 定义数组及变量为基本整型
    printf("请输入10个数:\n");
    for (i = 1; i <= 10; i++)
        scanf("%d", &a[i]);                                     // 从键盘中输入10个要进行排序的数
    qusort(a, 1, 10);                                           // 调用qusort()函数进行排序
    printf("排序后的顺序是:\n");
    for (i = 1; i <= 10; i++)
        printf("%5d", a[i]);                                        // 输出排好序的数组
    printf("\n");
}

示例结果:

$ gcc ex061.c -o demo
$ ./demo
请输入10个数:
45
12
76
2
45
16
34
61
24
90
排序后的顺序是:
    2   12   16   24   34   45   45   61   76   90
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容