排序二 快速排序 目录 要点 算法分析 快速排序算法的性能 时间复杂度 空间复杂度 算法稳定性 完整参考代码 JAVA版本 参考资料 相关阅读 回到顶部 要点 快速排序是一种交换排序。 快速排序由C. A. R. Hoare在1962年提出。 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两 ...
分类:
编程语言 时间:
2017-05-20 15:26:32
阅读次数:
164
快速排序是一个速度非常快的交换排序算法,思路比较简单:从一个待排的数据序列中任取一个数据作为分界值,所有比这个值小的数据放到这个数的左边,比这个值大的数据放到右边,这样经过一次下来,这个序列分成了左右两个序列,左边的数据都比分界值小,右边的数据都比分界值大,然后再对左右两个子序列进行递归。所以,快速 ...
分类:
编程语言 时间:
2017-05-18 22:35:44
阅读次数:
280
1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。 如何写写成代码: 代码实现如下: 2.希尔排序 对于直接插入排序问题,数据量巨大时。 如何写成代码: 代码实现如下: 3.简单选择排序 常用于取序列中最大最小的几个数时。 (如果每次比较都交换,那么就是交换排序;如果每 ...
分类:
编程语言 时间:
2017-05-14 21:56:13
阅读次数:
260
有一个数组,数组中存放了很多数字,现要求数组中的数字按照从小到大的方式排列. 代码实现:for (int i=0,i<arrays.Length-1;i++){ for(int j=i+1;j<arrays.Length;j++){ if(arrays[i]>arrays [j]){ double ...
分类:
编程语言 时间:
2017-05-14 21:52:38
阅读次数:
197
由于for循环可以通过控制循环变量的初始值和循环结束条件来改变遍历的区间,所以在排序或者遍历的时候,利用for循环就比较简单,以下是本人学习后得到的一些总结案例。 1.排序的应用 1)交换排序:通过取出的数和该数位置后面剩余的其他数逐一进行比较,将最大的或者最小的一个数放在一组数的首位,然后再将第二 ...
分类:
其他好文 时间:
2017-05-14 00:56:02
阅读次数:
243
上篇文章介绍了时间复杂度为O(nlgn)的合并排序,本篇文章介绍时间复杂度同样为O(nlgn)但是排序速度比合并排序更快的快速排序(Quick Sort)。 快速排序是20世纪科技领域的十大算法之一 ,他由C. A. R. Hoare于1960年提出的一种划分交换排序。 快速排序也是一种采用分治法解 ...
分类:
编程语言 时间:
2017-05-11 15:15:40
阅读次数:
314
三、交换排序 ①冒泡排序 1、基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 2、实例 3、java实现 复制代码 package com ...
分类:
编程语言 时间:
2017-04-29 15:14:05
阅读次数:
198
排序一 冒泡排序 目录 要点 算法思想 算法分析 冒泡排序算法的性能 时间复杂度 算法稳定性 优化 完整参考代码 JAVA版本 要点 冒泡排序是一种交换排序。 什么是交换排序呢? 交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 算法思想 它重复地走访过 ...
分类:
编程语言 时间:
2017-04-22 20:45:01
阅读次数:
293
快速排序 1.快速排序是有冒泡排序改进的来的。在冒泡排序的过程中,只对相邻的两个记录进行比较,因此每次交换两个相邻记录时只能消除一个逆序。如果通过两个不相邻记录进行交换,消除多个逆序,则会大大加快排序的速度。快速排序方法中一次交换可以消除多个逆序 算法方法: 从右侧找第一个比key值小的进行交换,从 ...
分类:
编程语言 时间:
2017-04-22 17:35:40
阅读次数:
220
这两天学习排序,简单的记录下,等看完之后再进行总结。 1.首先看了交换排序,顾名思义,也就是当无序时进行元素交换,从而达到元素有序。 【1】初级的是冒泡排序,冒泡排序的思想是:两两相邻的数据元素进行比较,如果反序则交换,直到有序为止,同时每一次比较之后较小(大)的数上浮,较大(小)的数下沉,因此命名 ...
分类:
编程语言 时间:
2017-04-20 19:29:38
阅读次数:
201