排序算法
算法名称
|
归类
|
英文名
|
时间复杂度
|
优点
|
缺点
|
和别的算法的比较
|
我常用的
|
直接插入排序
|
插入排序的一种
|
StraightInsectionSort
|
|
|
稳定
|
|
A
|
希尔排序
|
插入排序的一种
|
ShellSort
|
平均效率是O(nlogn)
|
适合于数据量在5000以下
|
不稳定
(即相等的数,在排序后相对位置可能改变)
|
Shell排序比冒泡排序快5倍,比插入排序大致快2倍。Shell排序比起QuickSort,MergeSort,HeapSort慢很多。
相对比较简单,它适合于数据量在5000以下并且速度并不是特别重要的场合.
|
|
快速排序
|
交换排序的一种
|
QuickSort
|
在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)
|
|
不稳定
|
|
A
|
冒泡排序
|
交换排序的一种
|
BubbleSort
|
n^2
|
|
稳定
|
|
A
|
1、 对数据进行排序,从小到大(2种方法) (23,53,28,24,46,33,18)
下面用冒泡排序和直接排序来实现数据排序:
一. 选择排序
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。
二. 插入排序
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
三. 希尔排序
四. 推排序
五 冒泡排序
六 快速排序
七 归并排序
var temp:int = 0;
var arr:Array = [23,53,28,24,46,33,18];
for (var i:int = 0; i < arr.length-1 ; i++){
for (var j:int = 0; j < arr.length - i - 1; j++){
if (arr[j]>arr[j + 1]) {
temp=arr[j];
arr[j]=arr[j + 1];
arr[j + 1]=temp;
}
}
}
trace(arr);
//直接排序
var arr:Array = [23,53,28,24,46,33,18];
for (var i:int = 0; i < arr.length; i++) {
var temp = arr[i];
for (var j:int = i; j > 0 && temp < arr[j - 1]; j--) {
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
trace(arr);