在选择排序中,从第一个元素开始,依次遍历数组中的元素,找出当前遍历元素之后的最小元素,与当前遍历元素交换位置,依此类推,是一种由前往后的排序。而在插入排序中,从第二个元素开始,依次遍历数组中的元素,把当前遍历元素与之前的元素进行比较,并插入到之前的某个位置,是一种由后往前的排序。 自定义一个类,里面...
分类:
其他好文 时间:
2014-07-29 13:43:48
阅读次数:
231
堆排序是一种选择排序,其时间复杂度为O(nlogn)。堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。情形1:ki = k2i 且ki >= k2i+1 (最大化堆或大顶堆)其中i=1,2,…,n/2向下取整;若将和此序列对应的一维数组(即以一维数组作此序列的存...
分类:
其他好文 时间:
2014-07-28 15:08:53
阅读次数:
248
选择排序法 第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。初始序列:{ 4...
分类:
其他好文 时间:
2014-07-27 22:53:59
阅读次数:
298
#includevoid SelectSort(int n,int a[]){ for(int i=0; i<n; i++) { int MIN=a[i]; int k=i; for(int j=i+1; j<n; j++) { ...
分类:
其他好文 时间:
2014-07-26 14:12:34
阅读次数:
206
学习一种语言: 最快的方法,就是研究其源代码。
从源代码中能够体会到各种经典的思想!
欣赏一下:
例如:
我们在写一些 冒泡和选择排序的时候用的 交换:
/**
* Swaps x[a] with x[b].
*/
private static void swap(Object[] x, int a, int b)...
分类:
编程语言 时间:
2014-07-25 10:57:31
阅读次数:
216
#includevoid selectSort(int a[],int length);void main(){ int i; float start=0,finish=0; int a[10]={10,15,4,2,5,3,6,9,7,1}; printf("排序前:\...
分类:
其他好文 时间:
2014-07-24 22:26:02
阅读次数:
186
昨日写完冒泡排序,和大多数人的感觉一样,太简单,丝毫没有挑战性。但楼主是一个追求踏实平稳的人,希望地基坚固,也为方便后面学习和研究更加高深的算法。但在研究效率上还有待提高,楼主一定好好努力。今天将会写完选择排序 和 插入排序,本文主在选择排序。一. 算法描写叙述 选择排序:比方在一个长度为N的...
分类:
其他好文 时间:
2014-07-24 10:11:43
阅读次数:
195
sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级。本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能讲讲其用法:1、sort入门:使用sort需要包含algorithm头文件,完整代码如下#inclu...
分类:
其他好文 时间:
2014-07-23 16:28:11
阅读次数:
202
本博文介绍首先介绍直接选择排序,然后针对直接选择排序的缺点改进的“堆排序”,堆排序非常适合:数组规模非常大(数百万或更多) + 严格要求辅助空间的场景。
分类:
其他好文 时间:
2014-07-22 22:46:55
阅读次数:
1802
冒泡排序和选择排序是排序算法中比较简单的两种算法。
冒泡排序的思想是:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,针对所有的元素重复以上的步骤,这样每次参与比较的元素就越来越少,直到没有任何一对数字需要比较。对N个数字进行冒泡排序,需要进行N-1趟比较,第i趟中需要进行N-i次比较。由于冒泡排序中每趟都重复比较了很多元素,导致...
分类:
其他好文 时间:
2014-07-22 17:48:41
阅读次数:
165