快速排序的主要思路:

1.在数组首尾处各设一个标记

2.取出数组第一个值作为中枢值

3.所有数据跟中枢值比较:比中枢值小的放中枢值左边,首部标记++往右推一位,大的放中枢值右边,尾部标记--往左推一位(从小到大排序)

4.先从尾部开始与中枢值比较,如果尾部标记的值比中枢值大直接把标记往左推一位,如果尾部标记比中枢值小就把尾部标记的值放到首部标记的位置,然后开始从首部开始与中枢值比较,如果首部标记的值比中枢值小直接把标记往右推一位,如果首部标记比中枢值大就把首部标记的值放到尾部标记的位置,一直循环直至首尾标记相遇。

5.首尾标记相遇代表找到了中枢值的准确位置,此时将数组从中枢值一分为二,使用递归继续对中枢值左右两侧的数据使用相同的方法进行排序;

C#示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace QuickSort
{
class Program
{
static void Main(string[] args)
{
int[] array = { 7, 1, 5, 4, 6, 7, 3, 9, 8, 2 };
QuickSort(0, 9, ref array);
for (int i = 0; i < 10; i++)
{
Console.WriteLine(array[i]);
}
return;
} static void QuickSort(int iMin,int iMax,ref int[] a)
{
int i = iMin, j = iMax, iPivot = a[iMin];
if (iMin >= iMax)
{
return;
}
while (i < j)
{
while (a[j] >= iPivot && i < j)
{
j--;
}
if (i < j)
{
a[i] = a[j];
i++;
}
while (a[i] <= iPivot && i < j)
{
i++;
}
if (i < j)
{
a[j] = a[i];
j--;
}
}
a[i] = iPivot;
QuickSort(iMin, i - 1, ref a);
QuickSort(i + 1, iMax, ref a);
}
}
}

相关视频链接:https://ke.qq.com/webcourse/index.html#course_id=150239&term_id=100171220&taid=686915594635999&vid=b1411uydxse

数据结构-快速排序(C#实现)的更多相关文章

  1. [数据结构] 快速排序C语言程序

    //由大到小//快速排序(待排序数组,左侧起点,右侧起点) void quickSort(int *array, int l, int r) { if ( l >= r) return; int ...

  2. JAVA数据结构--快速排序

    快排概念 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出.在平均状况下,排序个项目要(大O符号)次比较.在 ...

  3. python算法与数据结构-快速排序算法(36)

    一.快速排序的介绍 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外 ...

  4. Summary

    PDF 暑假开始准备转移博客,试了几个都不怎么满意(我还去试了下LineBlog 不知道那时候在想什么..),屯着一堆文章,,到时候一起发了 现在暂时转移至WordPress,不过还在完善中,预计.. ...

  5. 你见过的最全面的python重点

    首先和大家说个对不起,由于总结了太多的东西,所以篇幅有点长,这也是我"缝缝补补"总结了好久的东西,对于Nginx的东西我没总结在这里,大家可以Python聚焦看,点击直达专栏哦. ...

  6. 你见过的最全面的 Python 重点

    由于总结了太多的东西,所以篇幅有点长,这也是我"缝缝补补"总结了好久的东西. Py2 VS Py3 print成为了函数,python2是关键字 不再有unicode对象,默认st ...

  7. Python学习进阶

    阅读目录 一.python基础 二.python高级 三.python网络 四.python算法与数据结构 一.python基础 人生苦短,我用Python(1) 工欲善其事,必先利其器(2) pyt ...

  8. 数据结构-栈(应用篇)之快速排序法-C和C++的实现

    一.原理解析 快速排序法: 基本思路是,从第一个元素开始,把所有比它大的元素放在它后面,把所有比它小的元素放前面.然后划分它前面和后面的所有元素,分别再做快速排序,直到无法再划分为止. 在以下程序案例 ...

  9. javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法)

    javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法) 一.快速排序算法 /* * 这个函数首先检查数组的长度是否为0.如果是,那么这个数组就不需要任何排序,函数直接返回. * ...

随机推荐

  1. 【Python】 用户图形界面GUI wxpython IV 菜单&对话框

    更多组件 ■ 菜单栏 Menu 菜单是很多GUI必不可少的一部分.要建立菜单,必须先创建菜单栏: menuBar = MenuBar() menu = Menu() item1 = menu.Appe ...

  2. 【js Date】时间字符串、时间戳转换成今天,明天,本月等文字日期

    作为前端开发攻城师,难免对时间进行各种计算和格式转换,一个js的Date对象统统可以搞定.下例是将一个具体的时间转换成今天.明天.几天之内.本月等文字描述的日期的工具函数,也可以基于它扩展,多应用于网 ...

  3. Android中文API (110) —— CursorTreeAdapter

    前言 本章内容是android.widget.CursorTreeAdapter,版本为Android 3.0 r1,翻译来自"深夜未眠",欢迎访问它的博客:"http: ...

  4. 网络工具nslookup的使用

    根据域名查询ip 如下所示: bogon:~ hhh$ nslookup www.baidu.com. Server: 192.168.1.254. #默认的DNS服务器 Address: . #ip ...

  5. Kaggle竞赛 —— 房价预测 (House Prices)

    完整代码见kaggle kernel 或 Github 比赛页面:https://www.kaggle.com/c/house-prices-advanced-regression-technique ...

  6. Beta 第六天

    今天遇到的困难: github服务器响应很慢 推图的API接口相应较慢,超过了初始设定的最大延迟时间,导致了无法正确返回图片 ListView滑动删除Demo出现了某些Bug,这些Bug可能导致了某些 ...

  7. python自动发邮件

    from email.header import Header from email.mime.text import MIMEText from email.utils import parsead ...

  8. 在360、UC等浏览器,img不加载原因

    问题:图片在360浏览器不被加载,在UC浏览器强制不显示. 前言不多说,直接上图. 360浏览器显示情况: UC浏览器显示情况: 由以上两张截图可以看到,在360浏览器,banner图片处根本没有加载 ...

  9. jsp文件调用本地文件的方法(Tomcat server.xml 设置虚拟目录)

    JSP文件: <video id="my-video" class="video-js" controls preload="auto" ...

  10. 读论文系列:Object Detection ECCV2016 SSD

    转载请注明作者:梦里茶 Single Shot MultiBox Detector Introduction 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层featur ...