快速排序

17 篇文章 0 订阅
8 篇文章 0 订阅
本文深入探讨了快速排序算法的原理与实现细节,通过控制台应用实例展示了如何使用快速排序对一组数据进行高效排序。从输入数据到排序过程直至最终结果输出,全程详细解析,旨在帮助读者理解并掌握快速排序算法的应用。
摘要由CSDN通过智能技术生成

快速排序

// 快速排序.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<stdio.h>
#include<windows.h>
void quick_sort(int[],int,int,int);
void main()
{
    int data[20];
    int size = 0, i;
    //要求输入数据直到数据为0
    printf("\nPlease enter number to sort(enter 0 when end):\n");
    printf("Number:");
    do
    {
        scanf("%d",&data[size]);
    } while (data[size++] != 0);
    for (i = 0; i < 60; i++) printf("-");
    printf("\n");
    quick_sort(data,0,--size-1,size-1);
    for (i = 0; i < 60; i++) printf("-");
    printf("\nSorting:");
    for (i = 0; i < size; i++)
        printf("%d ",data[i]);
    printf("\n");
    system("pause");
}
void quick_sort(int data[], int left, int right, int size)
{//left与right分别表示要排序数据两端
    int lbase, rbase, temp, i;
    if (left < right)
    {
        lbase = left + 1;
        while (data[lbase] < data[left]) lbase++;
        rbase = right;
        while (data[rbase] < data[left]) rbase--;
        while (lbase < rbase)//若lbase小于rbase,则两数据对调
        {
            temp = data[lbase];
            data[lbase] = data[rbase];
            data[rbase] = temp;
            lbase++;
            while (data[lbase] < data[left]) lbase++;
            rbase--;
            while (data[rbase]>data[left]) rbase--;
        }
        temp = data[left];//此时lbase大于rbase,则rbase的数据与第一组对调
        data[left] = data[rbase];
        data[rbase] = temp;
        printf("Access:");
        for (i = 0; i < size; i++)
            printf("%d ",data[i]);
        printf("\n");
        quick_sort(data,left,rbase-1,size);
        quick_sort(data,rbase+1,right,size);
    }
}

测试1:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值