趁着有时间把学习过的排序算法又实现了一遍复习一下,实现的排序算法主要有以下几种:冒泡排序、快速排序,选择排序,堆排序,插入排序,合并排序,希尔排序,桶排序等。 下面是网上找的一张图片,总结了常见排序算法的时间复杂度、空间复杂度以及稳定性,可以参考一下。 下面排序的都是vector<int>,懒得写模
分类:
编程语言 时间:
2016-03-21 01:40:06
阅读次数:
336
部分转自 http://blog.csdn.net/whuslei/article/details/6442755 排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算
分类:
编程语言 时间:
2016-03-11 01:06:48
阅读次数:
282
前言 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序
分类:
编程语言 时间:
2016-03-07 18:47:25
阅读次数:
251
一、插入排序:稳定,时间复杂度O(n^2)想象你在打扑克牌,一开始左手是空的,接着右手开始从桌上摸牌,并将其插入到左手的一把牌中的正确位置上。为了找到这个正确位置,我们需要从右到左将它与手中的牌比较,直到找到合适的位置插入。整个过程的特点是,左手的牌是排好序的了。详见: 插入排序二、选择排序:不稳定,时间复杂度O(n^2)每趟从未排序部分选出最小的元素,然后通过交换将其添加到已排序部分中。详见:...
分类:
编程语言 时间:
2016-02-20 17:39:47
阅读次数:
202
排序(Sorting)就是将一组对象依照规定的次序又一次排列的过程,排序往往是为检索而服务的。它是数据处理中一种非常重要也非经常常使用的运算。比如我们日常学习中的查字典或者书籍的文件夹。这些都事先为我们排好序,因此大大减少了我们的检索时间,提高工作效率。 排序可分为两大类: 内部排序(Interna
分类:
编程语言 时间:
2016-02-03 10:38:52
阅读次数:
234
排序算法总结:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目...
分类:
编程语言 时间:
2016-01-22 17:31:28
阅读次数:
260
每一趟将一个待排序的记录,按其关键字值的大小插入到已经排好序的部分序列的适当位置上,直到全部插入为止,就是把第一个元素作为哨兵即已经排好的序列,比较第一个元素和第二个元素,是第二个元素插入之后仍然有序。 1 public class Inser { 2 public static void ...
分类:
编程语言 时间:
2016-01-05 18:28:04
阅读次数:
141
把第一个元素当作最小的,并标记小标。第二个元素与第一个元素作比较,如果第二个元素比一个元素小,与第一个元素交换,并把第二个元素标记最小。以此类推。 1 public class Sra { 2 public static void main(String[] args) { 3 ...
分类:
编程语言 时间:
2016-01-05 18:09:10
阅读次数:
132
排序集锦各种排序算法,总结一下,一直在遗忘......【冒泡排序】就是下面这个鬼啦:c实现代码(升序):#includevoid BubbleSort(int *array,int num){ int i,j,temp; for(j=0;jarray[i]) //倒序就把...
分类:
其他好文 时间:
2016-01-02 07:00:47
阅读次数:
178
其实自己已经实现过多次,但是因为岁月不饶人,总是各种忘记,这次需要好好的记录一下了,反正有一点是绝对正确的:没有记录下来的知识不是自己的知识!1.插入排序//插入排序void inssort(int a[],int n) { //一个元素天然就是排好序的,所以i从1开始循环 for (int i =...
分类:
编程语言 时间:
2015-11-30 20:04:39
阅读次数:
273