快速排序 C实现

这篇博客详细介绍了快速排序算法的原理,包括如何选择枢轴元素、如何划分数组以及递归排序的过程。通过示例代码展示了`swap`函数和`quickSort`函数的实现,解释了递归终止条件及关键步骤。文章还探讨了该算法的时间复杂度和效率。
摘要由CSDN通过智能技术生成

从小到大排序

void swap(int *a,int *b){
  int temp=*a;
  *a=*b;
  *b=temp;
}

void quickSort(int *arr,int first,int last){//递归时需要通过首尾下标确定子数组在原数组起始终止位置
  if(first>last){//这里是递归的终止条件,所以传入的参数有关
    return;
  }
  
  int i=first;
  int j=last;
  int key=arr[first];
  
  /*针对整个传入的序列,将左边的大的与右边的小的不断交换*/
  while(i<j){
    while(arr[j]>=key&&i<j){
      j--;
    }
    while(arr[i]<=key&&i<j){
      i++;
    }
    swap(arr[i],arr[j]);
  }
  
  //当结束循环时,i和j已经指向同一个数了
  //不太明白这两句
  arr[first]=arr[i];
  arr[i]=key;
  
  /*将左右两半子序列传进函数排序*/
  quickSort(arr,first,i-1);
  quickSort(arr,i+1,last);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值