排序算法

Posted jason-beijing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法相关的知识,希望对你有一定的参考价值。

 
算法名称
归类
英文名
时间复杂度
优点
缺点
和别的算法的比较
我常用的
直接插入排序
插入排序的一种
StraightInsectionSort
 
 
稳定
 
希尔排序
插入排序的一种
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)
 
 
 
 
 
数据排序方法根据占用内存的方式不同分为2大类: 内部排序方法与外部排序方法。内部排序方法可归纳为五类:插入排序、选择排序、交换排序、归并排序和分配排序。
其中,插入排序主要包括直接插入排序希尔排序两种;选择排序主要包括直接选择排序堆排序;交换排序主要包括冒泡排序和快速排序
下面用冒泡排序和直接排序来实现数据排序:
 
一.  选择排序
在要排序的一组数中,选出最小(或者最大)的一个数与第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);
 
技术分享图片
技术分享图片

以上是关于排序算法的主要内容,如果未能解决你的问题,请参考以下文章

排序算法概述

十大经典排序算法总结(归并排序)

十大经典排序算法总结(桶排序)

十大经典排序算法总结(希尔排序)

十大经典排序算法总结(快速排序)

十大经典排序算法总结(冒泡排序)