常用的排序算法的时间复杂度和空间复杂度
排序法
最差时间分析
平均时间复杂度
稳定度
空间复杂度
冒泡排序
O(n2)
O(n2)
稳定
O(1)
快速排序
O(n2)
O(n*log2n)
不稳定
O(log2n)~O(n)
选择排序
O(n2)
O(n2)
稳定
O(1)
二叉树排序
O(n...
分类:
编程语言 时间:
2015-03-16 01:04:52
阅读次数:
120
冒泡和递归一样,不管大家水平怎么样,基本上都能凑合的写写,快速排序其实主要的也是数据的交换,都算是交换排序,不过快排需要了解分治思想,实现的时候需要递归一下,导致很多时候看快排的时候都看的云里雾里。假设有一个无序的整型数组索引 0 1 2 3 4 5 6数值 15 32 8...
分类:
编程语言 时间:
2015-03-15 22:57:28
阅读次数:
174
说明:很简答的优化,却有很多人容易在面试时候栽在这个简单的问题上。“冒泡排序”在面试中是很容易被问到的排序算法,也是最简单的排序算法,当被问到,“冒泡排序怎么优化?”,很多人就懵了,冒泡还能优化?答案是可以的。1. 这是一般的冒泡排序。 1 /// 2 /// 通俗...
分类:
编程语言 时间:
2015-03-15 19:35:20
阅读次数:
168
//结构体中整体赋值概念 结构体创建时是一个整体不可以赋值 对于冒泡排序等问题由于逻辑思维等的跟不上原因可以多花点图加以理解
//考虑问题要照顾细节切不可以粗心大意。
//某些问题的解决要多考虑a,b,c.t,这种方法 即利用代换的方法解决问题。特别是在结构体 数组 指针这一方面。...
分类:
其他好文 时间:
2015-03-15 18:26:03
阅读次数:
98
冒泡排序
算法分析
时间复杂度
若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数
和记录移动次数
均达到最小值:
,
。
所以,冒泡排序最好的时间复杂度为
。
若初始文件是反序的,需要进行
趟排序。每趟排序要进行
次关键字的比较(1≤i≤n-1),且每次比较都必...
分类:
编程语言 时间:
2015-03-15 16:51:20
阅读次数:
156
原理:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。package com.java1234.chap02.sec06;public class Demo1 { public stat...
分类:
编程语言 时间:
2015-03-15 13:48:29
阅读次数:
138
??
冒泡排序即每次遍历。相邻数字间进行比较,前者大于后者进行交换,不断将最大值后移,直至沉至最后位置;算法关键要点在于确定每次循环的边界;
后面两种算法则是对冒泡排序一定程度上的改良,但相对于其他排序算法,冒泡排序性能依然较差。
//冒泡排序
public class Bubble_Sort {
//最原始的解法
public void bubble_sort1(int[] ...
分类:
编程语言 时间:
2015-03-15 10:59:38
阅读次数:
153
冒泡排序的基本思想是:每一次将最具有特征的一个数(或者object)放到序列的最前面,或者最后面。也可以让相邻的两个数(对象)比较,重新排序后,再次重新比较,如果有结果(必出大小等)再次重新排列,否则进行下一次比较。冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,...
分类:
编程语言 时间:
2015-03-15 10:43:21
阅读次数:
132
这个函数是根据简单的从小到大冒泡排序拓展出来的可以控制按照什么方式排序...
分类:
编程语言 时间:
2015-03-14 18:38:10
阅读次数:
180
小序
排序是非常重要且很常用的一种操作,有冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序等多种方法。这里我们先简单介绍前三种排序算法和代码的实现,其余算法将在后续课程《数据结构》中学习到。算法只是一种思想,其实现依赖于数据结构,所以这里提取出一些典型的算法和数据结构,包括排序以及链表/堆栈/队列等结构的操作。
----------------------...
分类:
其他好文 时间:
2015-03-14 17:01:30
阅读次数:
204