数据结构——快速排序

本文详细介绍了快速排序算法的工作原理,包括选择基准元素、分区过程、递归调用以及使用C语言的示例代码。通过四分之一的口诀展示了其核心步骤:一个if判断、三个int操作和两个循环。
摘要由CSDN通过智能技术生成

视频讲解

快速排序

一句话描述:选一个元素,比他小的元素放左面,比他大的放右面,一趟确定一个元素正确位置。通过递归,再分别对左面和右面的元素进行同样操作。
快速排序
四i三w一A两递归:四爱三打一A两递归

#include <stdio.h>
void quickSort(int A[],int low,int high){
    //速记口诀 四个i:一个if,三个int
    //当左指针与右指针重合时,当前层排序完成
    if(low>=high) return;
    //临时变量初始化
    int i=low;
    int j=high;
    int temp=A[i];
    
    //三个w:一外两内循环
    //快排精髓:以第一个元素为锚点
    while(i<j){
        //找j,左移右指针,直至右指针指向元素小于temp,此时不再移动
        while(i<j && temp<=A[j]) j--;
        
        //交换,小元素所以往前放,右指针固定
        A[i] = A[j];
        
        //找i,此时右移左指针,直至左指针指向元素大于temp,停止移动
        while(i<j && temp>=A[i]) i++;
        
        //交换,大元素所以往后放
        A[j] = A[i];
        
        //i<j,不断循环,不断交换
    }
	//循环结束此时i==j,此时实现了左边所有元素比temp小,右边都比temp大,temp位置确定
    A[i] = temp;
    
    //一次确定一个元素正确位置,向temp两侧调用快排算法
    quickSort(A,low,i-1);
    quickSort(A,j+1,high);

}

测试函数:

int main() {
    int A[] = {6, 3, 4, 5, 1, 2};
	int len = sizeof(A)/sizeof(int);
	
	quickSort(A, 0, len-1);
	for(int i=0;i<len;i++){
		printf("%d ",a[i]);
	}
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值