c语言排快速排序过程,C语言中快速排序法怎么排

快速排序法的排法:首先每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边;然后将大于等于基准点的数全部放到基准点的右边;最后在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。

b5bb3a15165292f16a30c96466b35486.png

快速排序法的排法:

算法思想:

(1) 我们从待排序的记录序列中选取一个记录(通常第一个)作为基准元素(称为key)key=arr[left],然后设置两个变量,left指向数列的最左部,right指向数据的最右部。

d809a20f5963650f0bd36f1106d88ef7.png

(2) key首先与arr[right]进行比较,如果arr[right]key则我们只需要将right--,right--之后,再拿arr[right]与key进行比较,直到arr[right]

5b030ada7e2702da2e0211959c6a50e9.png

(3) 如果右边存在arr[right]key,则将arr[right]=arr[left],如果arr[left]

0a1a8ce9b52c5b09acb6b18cd93ef0ef.png

(4) 然后再移动right重复上述步骤

3c8b154261f78dc56d54b39d34e37bc8.png

(5) 最后得到 {23 58 13 10 57 62} 65 {106 78 95 85},再对左子数列与右子数列进行同样的操作。最终得到一个有序的数列。

f9d227bf1673220e284c48c042db06c1.png

算法实现:public class QuickSort {

public static void quickSort(int [] arr,int left,int right) {

int pivot=0;

if(left

pivot=partition(arr,left,right);

quickSort(arr,left,pivot-1);

quickSort(arr,pivot+1,right);

}

}

private static int partition(int[] arr,int left,int right) {

int key=arr[left];

while(left

while(left=key) {

right--;

}

arr[left]=arr[right];

while(left

left++;

}

arr[right]=arr[left];

}

arr[left]=key;

return left;

}

public static void main(String[] args) {

int arr[]= {65,58,95,10,57,62,13,106,78,23,85};

System.out.println("排序前:"+Arrays.toString(arr));

quickSort(arr,0,arr.length-1);

System.out.println("排序后:"+Arrays.toString(arr));

}

}排序前:[65, 58, 95, 10, 57, 62, 13, 106, 78, 23, 85]

排序后:[10, 13, 23, 57, 58, 62, 65, 78, 85, 95, 106]相关学习推荐:C视频教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值