首页后端开发ASP.NETC语言中快速排序法怎么排

C语言中快速排序法怎么排

时间2024-02-01 01:03:02发布访客分类ASP.NET浏览220
导读:收集整理的这篇文章主要介绍了C语言中快速排序法怎么排,觉得挺不错的,现在分享给大家,也给大家做个参考。快速排序法的排法:首先每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边;然后将大于等于基准点的数全部放到基准点的右边...
收集整理的这篇文章主要介绍了C语言中快速排序法怎么排,觉得挺不错的,现在分享给大家,也给大家做个参考。

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

快速排序法的排法:

算法思想:

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

(2) key首先与arr[right]进行比较,如果arr[right]key,则arr[left]=arr[right]将这个比key小的数放到左边去,如果arr[right]> key则我们只需要将right--,right--之后,再拿arr[right]与key进行比较,直到arr[right]key交换元素为止。

(3) 如果右边存在arr[right]key的情况,将arr[left]=arr[right],接下来,将转向left端,拿arr[left ]与key进行比较,如果arr[left]> key,则将arr[right]=arr[left],如果arr[left]key,则只需要将left++,然后再进行arr[left]与key的比较。

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

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

算法实现:

public class Quicksort {
    public static void quickSort(int [] arr,int left,int right) {
          int pivot=0;
      if(leftright) {
             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(leftright) {
             while(leftright &
    &
     arr[right]>
=key) {
                right--;
         }
             arr[left]=arr[right];
             while(leftright &
    &
 arr[left]=key) {
                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视频教程

以上就是c语言中快速排序法怎么排的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: c语言%什么意思下一篇:判断char型变量ch是否为大写字母...猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: C语言中快速排序法怎么排
本文地址: https://pptw.com/jishu/594715.html
手写Vue2.0 数据劫持的示例 vue3.0 项目搭建和使用流程

游客 回复需填写必要信息