上学时数据结构就一直没学好, 死皮赖脸连抄带蒙, 补考时才考过. 早知道现如今脑子不够使, 那时候一定好好学….
排序的算法比较多,大概可分为:
* 插入排序
* 冒泡排序
* 选择排序
* 快速排序
* 堆排序
* 归并排序
* 基数排序
* 希尔排序
在这我就找俩最简单的练练手先, 写的不一定对, 欢迎指正, 批评才是我前进的动力…
直接插入排序 Insertion Sort
}
/**
* 插入排序[直接插入排序 Insertion Sort]
*/
public static function insertionSort(arrayToBeSorted:Array):void {
for(var i:int = 0; i0; j--) {
if(arrayToBeSorted[j-1]>arrayToBeSorted[i]) {
arrayToBeSorted[j] = arrayToBeSorted[j-1];
}else {
break;
}
trace(j);
}
arrayToBeSorted[j] = temp;
}
trace(arrayToBeSorted);
}
交互排序[冒泡排序 Bubble Sort]
/**
* 交互排序[冒泡排序 Bubble Sort]
*/
public static function bubbleSort(arraytoBeSorted:Array):void {
var startIndex:int = 0;
var tempIndex:int;
for(var j:int = arraytoBeSorted.length - 1; j>0; j--) {
for(var i:int = arraytoBeSorted.length - 1; i>startIndex; i--) {
if(arraytoBeSorted[i-1]>arraytoBeSorted[i]) {
//swap(arraytoBeSorted[i], arraytoBeSorted[i-1]);
var temp:int = arraytoBeSorted[i];
arraytoBeSorted[i] = arraytoBeSorted[i-1];
arraytoBeSorted[i-1] = temp;
tempIndex = i;
}
}//end of for
startIndex = tempIndex;
trace("StartIndex: " + startIndex);
trace("冒泡法排序结果: " + arraytoBeSorted);
}//end of for
}
双向冒泡:
/**
* 交互排序[双向冒泡]
*/
public static function doubleDirectionBubbleSort(arrayToBeSorted:Array):void {
var j:int;
var k:int;
var tempIndex:int = arrayToBeSorted.length;
var startIndex:int = 0;
var endIndex:int = arrayToBeSorted.length - 1;
var change:Boolean = true;
while(startIndexstartIndex; j--) {
change = false;
if(arrayToBeSorted[j]arrayToBeSorted[k]) {
var temp:int = arrayToBeSorted[k];
arrayToBeSorted[k] = arrayToBeSorted[k-1];
arrayToBeSorted[k-1] = temp;
change = true;
}
tempIndex = k;
trace("重的下沉: " + arrayToBeSorted +" Changed: " + change.toString() + " StrtIndex: " + startIndex + " EndIndex:" + k);
}//end of for
endIndex = tempIndex;
trace("startIndex: " + startIndex + " endIndex: " + endIndex);
trace("双向冒泡排序后: " + arrayToBeSorted);
}//end of while
}//end of function



看懂了 俩字 ,冒泡 那就冒个泡吧
都是些经典的算法