快速排序算法应用

  • 快排原理
  • 快排具体案例的使用(C#实现)

快排原理

快排的核心思想是分治,从一组数组中,选择第一个数作为基数,然后从后往前遍历并和该基数做比较,若基数比该数大,则基数和该数交换位置,此时该数作为新的基数,开始从前往后遍历,若遇到比基数小的数,则该数和基数交换位置,此时该数成为新的基数,开始从后往前遍历,重复以上操作,最后会得到数组中小于一开始的那个基数的数全部在左边,大于的全部在右边,接着,递归处理左边部分的数组和右边部分的数组。

如下表格中,第一个数3为基数,则将3拿去从后往前做比较

3 2 1 8 5

3比1大,则3与1交换位置

1 2 3 8 5

此时拿1去从前往后做比较,均大于1,即一开始的那个基数3的左边均小于他,右边均大于他,则左边和右边分别为如下表格所示

1 2
8 5

重复上述遍历比较操作后,得

1 2
5 8

则该组数组的排序为

1 2 3 5 8

快排具体案例的使用(C#实现)

例题:已知有一个排序好的数组,此时再给你一个新的数字,写一个方法有序插入数字到数组中,效率越高越好。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Sort
{class Program{//自由输入一组数组static void Main(string[] args){int[] arr;Console.WriteLine("请输入数组的长度:");int length = Convert.ToInt32(Console.ReadLine());//Console.ReadLine() 会等待直到用户按下回车,一次读入一行//Convert.ToInt32()将数字的指定字符串表示形式转换为等效的 32 位有符号整数arr = new int[length];for (int i = 0; i < length; i++){Console.WriteLine("请输入第{0}个数:", i + 1);arr[i] = Convert.ToInt32(Console.ReadLine());}int min = 0;int max = arr.Length - 1;sort(arr, min, max);foreach (int i in arr){Console.WriteLine(i);}Console.ReadKey();//Console.ReadKey(); 则是等待用户按下任意键,一次读入一个字符。}public static void sort(int[] array, int min, int max){int key = array[min]; //数组的首位作为基数int start = min;      //从前往后遍历标识位int end = max;        //从后往前遍历标识位//两个标识位还未相遇,即基数的左边还未全小于基数,右边还未全大于基数while (end > start){   //从后往前遍历没有遇到比基数大的while (end > start && array[end] >= key){end--;}//当遇到比基数大时,互相交换位置if (key > array[end]){int temp = array[end]; array[end] = array[start];array[start] = temp;}//从前往后遍历,没有比新基数小的数while (end > start && array[start] <= key){start++;}//当遇到比新基数小时,互相交换位置if (key < array[start]){int temp = array[start];array[start] = array[end];array[end] = temp;}}//此时基数的左边全小于基数,右边全大于基数,利用递归思路//排序左边部分if (start > min){sort(array, min, start - 1);}//排序右边部分if (end < max){sort(array, end + 1, max);}}}
}

C#实现快速排序(通俗易懂)相关推荐

  1. Python3实现快速排序 通俗易懂

    Python3实现快速排序 快速排序 是一种交换排序,属于分治算法. 思路: 对于要排序的元素集合,指定集合的第一个元素为基准点,通过一系列的扫描和交换(见下面的代码),让基准点左边的元素比基准点小, ...

  2. 图解快速排序——通俗易懂(quick sort)

    文章目录 :fire:快速排序 :book: 1.图解算法 :book: 2.算法代码 :book: 3.例题 :book: 4.时空复杂度分析

  3. 【数据结构】对快速排序原理的理解(图解,通俗易懂)

    学习数据结构时,书本上直接给出了快速排序的过程以及代码,对其原理解释的不够详细,琢磨代码后,发现其原理其实十分简单,简述如下: (1)在待排序列中找一个"中枢元素"(书本上默认取序 ...

  4. 本题要求实现一个用选择法对整数数组进行简单排序的函数。_通俗易懂讲 Python 算法:快速排序...

    原文:https://stackabuse.com/quicksort-in-python/ 作者:Marcus Sanatan 译者:老齐 欢迎在 bilibili  搜索 freeCodeCamp ...

  5. 三分钟学会快速排序(图示讲解,附代码,通俗易懂)

    tag:分治.排序 快速排序的通俗解释 1.从数组中选出一个元素xxx(可以随意选取) 2.把所有<=x<=x<=x的元素放在x前面(形成一个子区间),所有>=x>=x& ...

  6. 快速排序基本思路(通俗易懂+例子)

    https://blog.csdn.net/code_AC/article/details/74158681 快速排序 今天看到大神写的一篇快速排序的博客,肃然起敬,觉得原来快速排序这么简单 下面进行 ...

  7. js数组按中文拼音排序_通俗易懂讲 Python 算法:快速排序

    原文:https://stackabuse.com/quicksort-in-python/ 作者:Marcus Sanatan 译者:老齐 欢迎在 bilibili  搜索 freeCodeCamp ...

  8. 快速排序(代码通俗易懂,干净整洁)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.快速排序思路 二.快速排序代码 三.读入数据 总结 前言 快速排序的特点 1.快速排序是对冒泡算法的改进. 2.快 ...

  9. 我见过最通俗易懂的快速排序过程讲解,转自《坐在马桶上看算法:快速排序》

    https://blog.csdn.net/vayne_xiao/article/details/53508973

最新文章

  1. Python之超级好用的8个VS Code扩展
  2. cxf返回的报文,命名空间无前缀
  3. Fn函数来构建Oracle ADF应用程序
  4. 一张图解决项目常见乱码问题
  5. 计算机逻辑学包含分析,逻辑学在职研究生教育的基本内容分析
  6. 使用SQLite3支持中文路径
  7. 游戏中出现服务器维护中怎么办,游戏服务器显示维护中
  8. delphi 防止程序双开 更好的 Best!
  9. 表单里面能不能套表单_抽奖+表单,居然还能这么玩?
  10. 又一篇好文:折磨人的商业计划书
  11. java图书借阅系统java图书管理系统java书籍借阅系统
  12. 软件工程——软件开发模型
  13. 郑州等保测评公司有哪些?在哪里?
  14. Boost Asio介绍
  15. SQLyog启动:错误号码2003问题的解决
  16. AI生活助理玩秘获1000万元Pre-A融资,启赋资本和英诺天使基金投资
  17. 力扣刷题 DAY_78 贪心
  18. 常用的Transformation
  19. C++四大特性——多态 的总结
  20. 2015年全国谷歌卫星地图离线数据存储方案

热门文章

  1. docx 图片预处理 Java_java使用poi给docx文档添加图片(官方例子)
  2. VALSE 2017 | 神经网络模型压缩优化方法
  3. Wellbox牵手豌豆淘,强强联手进抢占美容仪器市场
  4. 有10箱产品,每箱有1000件,其中正品每件100克。其中有几箱是次品,每件次品比正品轻10克,问能否用秤只称一次,就找出哪几箱是次品?
  5. 一个女孩5年的IT销售经历
  6. linux release 版本的区别,Linux 查看版本信息
  7. QT Libvlc旋转播放视频
  8. 2021.09.24—皮皮与帅帅的第二篇情话
  9. 字符串除去数字和小数点以外的内容
  10. 为什么现在是做跨境电商亚马逊店群的最佳时期?