数据结构-快速排序(C#实现)
快速排序的主要思路:
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);
}
}
}
数据结构-快速排序(C#实现)的更多相关文章
- [数据结构] 快速排序C语言程序
		//由大到小//快速排序(待排序数组,左侧起点,右侧起点) void quickSort(int *array, int l, int r) { if ( l >= r) return; int ... 
- JAVA数据结构--快速排序
		快排概念 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出.在平均状况下,排序个项目要(大O符号)次比较.在 ... 
- python算法与数据结构-快速排序算法(36)
		一.快速排序的介绍 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外 ... 
- Summary
		PDF 暑假开始准备转移博客,试了几个都不怎么满意(我还去试了下LineBlog 不知道那时候在想什么..),屯着一堆文章,,到时候一起发了 现在暂时转移至WordPress,不过还在完善中,预计.. ... 
- 你见过的最全面的python重点
		首先和大家说个对不起,由于总结了太多的东西,所以篇幅有点长,这也是我"缝缝补补"总结了好久的东西,对于Nginx的东西我没总结在这里,大家可以Python聚焦看,点击直达专栏哦. ... 
- 你见过的最全面的 Python 重点
		由于总结了太多的东西,所以篇幅有点长,这也是我"缝缝补补"总结了好久的东西. Py2 VS Py3 print成为了函数,python2是关键字 不再有unicode对象,默认st ... 
- Python学习进阶
		阅读目录 一.python基础 二.python高级 三.python网络 四.python算法与数据结构 一.python基础 人生苦短,我用Python(1) 工欲善其事,必先利其器(2) pyt ... 
- 数据结构-栈(应用篇)之快速排序法-C和C++的实现
		一.原理解析 快速排序法: 基本思路是,从第一个元素开始,把所有比它大的元素放在它后面,把所有比它小的元素放前面.然后划分它前面和后面的所有元素,分别再做快速排序,直到无法再划分为止. 在以下程序案例 ... 
- javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法)
		javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法) 一.快速排序算法 /* * 这个函数首先检查数组的长度是否为0.如果是,那么这个数组就不需要任何排序,函数直接返回. * ... 
随机推荐
- 19.C++-(=)赋值操作符、智能指针编写(详解)
			(=)赋值操作符 编译器为每个类默认重载了(=)赋值操作符 默认的(=)赋值操作符仅完成浅拷贝 默认的赋值操作符和默认的拷贝构造函数有相同的存在意义 (=)赋值操作符注意事项 首先要判断两个操作数是否 ... 
- 关于BufferedReader的readLine方法遇到的坑
			今天偶然用到BufferedReader,在读取文本后输出数据的时候遇到了隔行输出的问题. 如: 床前明月光 疑是地上霜 123456 789789 输出的为:疑是地上霜789789 找了一下,最终找 ... 
- Be Better , Be Better
			Be Better! 这不是一道题,只是我的flag.初三寒假,一个本应该对着计算机翻天覆雨的假期,我在鬼班撸高中课...其实感触是从初中课得来的.有些事,以前我说是我不懂,现在我不说不是我不懂.Ju ... 
- django中使用Model的update_or_create函数时报错
			官方使用示例: obj, created = Person.objects.update_or_create( first_name='John', last_name='Lennon', defau ... 
- 2017年PHP程序员未来路在何方——韩天峰
			PHP 从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js . GO . Python 不断地在挑战 PHP 的地位.这些技术的推 ... 
- Jmeter-基于Ubuntu运行
			这几天折腾了很久,整合了一套接口自动化的持续集成工具,先从最基础的运行Jmeter说起.由于我是用Docker部署的持续集成环境,所以接口运行必须在服务器上 一:在Linux服务器先安装jdk 1:先 ... 
- Java基础学习笔记二十五  MySQL
			MySQL 在dos中操作mysql 连接mysql命令: mysql -uroot -p密码 ,连接OK,会出现mysql> 对数据库的操作 创建一个库 create database 库名 ... 
- winform 适配high dpi
			在 mainifest文件中添加:(新建mainifest文件的时候以下内容是有的,只要取消注释就可以了) <compatibility xmlns="urn:schemas-micr ... 
- C语言第二周作业----分支结构
			一.PTA实验作业 题目1.7-1计算分段函数 本题目要求计算下列分段函数f(x)的值: 注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂. 1.实验代码 int ma ... 
- 进程与fork()、wait()、exec函数组
			进程与fork().wait().exec函数组 内容简介:本文将引入进程的基本概念:着重学习exec函数组.fork().wait()的用法:最后,我们将基于以上知识编写Linux shell作为练 ... 
