快速排序算法

本文介绍了一个使用C语言实现的快速排序算法。通过定义一个结构体SqList来存储数组,并利用Partition函数进行分区操作,最终实现了对整数数组的快速排序。用户可以输入待排序的整数个数及具体数值,程序将输出排序后的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

typedef struct{
    int *elem;
    int length;
    int listsize;
 }SqList;

 int Partition(SqList &L,int low,int high)
 {
    int pivotkey;
    L.elem[0]=L.elem[low];
    pivotkey=L.elem[low];
    while(low<high)
    {
        while(low<high&&L.elem[high]>=pivotkey)
          --high;
          L.elem[low]=L.elem[high];
        while(low<high&&L.elem[low]<=pivotkey)
          ++low;
           L.elem[high]=L.elem[low];
    }
    L.elem[low]=L.elem[0];

    return low;
 }

 void QSort(SqList &L,int low,int high)
 {
    int pivotloc;
    if(low<high)
    {
      pivotloc= Partition(L,low,high);
      QSort(L,low,pivotloc-1);
      QSort(L,pivotloc+1,high);
    }
 }

 void InittList_Sq(SqList &L)
 {
    int i,n,listsize;
    printf("请输入整数个数:\n");
    scanf("%d",&listsize);
    L.elem=(int *)malloc((listsize+3)*sizeof(int));
    if(!L.elem)
     exit(0);
    printf("分别输入%d个数\n",listsize);
    for(int i=1;i<=listsize;i++)
    {
        scanf("%d",&L.elem[i]);
    }
     L.length=listsize;
     L.listsize=listsize+3;
     n=L.length;
     QSort(L,1,n);
    printf("排序后的顺序为:\n");
    for(i=1;i<=n;i++)
    {
        printf("%d ",L.elem[i]);
    }
    printf("\n");
 }

 void main()
 {
    SqList L;
    InittList_Sq(L);
 }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值