数据结构
LoveZhangjia521
这个作者很懒,什么都没留下…
展开
-
排序算法---冒泡排序
话说这冒泡排序好久都没有用过了,忘得差不多了,但是由于目前的需要,只能再次重新学习了一下。 各种算法最好是用C/C++,因为执行效率高啊,在JAVA平台运行这些算法有些不适合,不过这个冒泡排序姑且用JAVA来测试一下。 下图是对它的各种复杂度的评价 最差时间复杂度 O(n2) 最优时间复杂度 O(n) 平均时间复杂度 O(n2) 最差空间复杂度 O(n) ...2011-09-27 21:22:41 · 118 阅读 · 0 评论 -
排序算法---快速排序
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速...2011-10-07 16:39:02 · 146 阅读 · 0 评论 -
排序算法---归并排序
归并排序中的“归并”的意思是将两个或者两个以上的有序表组合成一个新的有序表。他的实现无论是顺序存储结构还是链表结构,都可以在O(m+n)的时间级上实现。 复杂度: 时间复杂度:O(nlogn) 空间复杂度:O(n) 用途: 1、排序(速度仅次于快速排序,但较稳定) 2、求逆序对数 在实现单数组的归并排序之前,首先了解一下双数组的归并排序 这个双数组归并的前提是两个...2011-10-07 21:06:28 · 153 阅读 · 0 评论 -
排序算法---插入排序
插入排序的算法原理比较简单,通过一点点构建有序序列来达到排序的目的。比如给出一个数组a,长度为5,那么首先会将第一个元素作为一个已经排序的序列,然后从第二个元素开始向已经排序的序列(就是第一个元素)从后向前扫描,如果比这个序列中的元素小的话,就插入到相应元素的前面,而插入后需要后移元素。然后第三个元素再从这两个元素组成的有序序列的后面扫描,找到比它小的位置后就插入,否则继续向前扫描,以此类推。 ...2011-10-08 11:29:44 · 168 阅读 · 0 评论 -
排序算法--折半插入排序(二分查找排序)
折半插入排序其实就是直接插入排序的一种改进,引入了二分查找算法,这样关键字的比较次数就会减少, 数量级为O(nlog^2n),但是元素移动次数还是O(n^2),所以折半插入排序的时间复杂度是O(n^2)。 另外,折半插入排序是稳定的排序算法; 下面是用JAVA写的算法的两种实现方式。不过原理都是一样的 第一种: package sort; import java.util...2011-10-08 18:33:45 · 340 阅读 · 0 评论