插入排序
image.png
/**
* Created by 編程只服JAVA on 2017.07.13.
*/
var arr = [1,43,23,56,12];
function inSertSort(Array)
{
for(var i = 1; i < Array.length; ++i)
{
//插入的起手位置
var key = arr[i];
//已排好序的部分Array[0, j]
var j = i - 1;
//如果插入的起手位置 < 前面排好序的部分
while (j > -1 && Array[j] > key)
{
Array[j + 1] = Array[j];
--j;
}
//找到合適的插入位置雹姊,因?yàn)閖已經(jīng)跑到了前一個(gè)位置枪蘑,因此需要j + 1
Array[j + 1] = key;
}
}
inSertSort(arr);
console.info(arr);
冒泡排序
image.png
/**
* Created by 編程只服JAVA on 2017.07.13.
*/
var arr = [1,43,23,56,12,12];
function bubbleSort(Array)
{
//for Array[0, high - 1]
for(var i = 0; i < Array.length - 1; ++i)
{
//優(yōu)化
var flag = true;
//for Array[high, i + 1] down to, 因?yàn)橄旅鍭rray[j] < Array[j - 1],所以j >= i + 1;
//將小的元素向前冒
for(var j = Array.length - 1; j >= i + 1; --j)
{
if (Array[j] < Array[j - 1])
{
var temp = Array[j];
Array[j] = Array[j - 1];
Array[j - 1] = temp;
flag = false;
}
}
if (flag) break;
}
}
bubbleSort(arr);
console.info(arr);
選擇排序
/**
* Created by 編程只服JAVA on 2017.07.13.
*/
var arr = [1,43,23,56,12,12];
function selectSort(Array)
{
// 臨時(shí)變量朋截,用于交換
var temp = 0;
var minIndex = 0;
// 要注意一點(diǎn)迁匠,當(dāng)要排序 N 個(gè)數(shù)海雪,已經(jīng)經(jīng)過(guò) N-1 次遍歷后曹傀,已經(jīng)是有序數(shù)列
for(var i = 0; i < Array.length - 1; ++i)
{
// 用來(lái)保存最小值得索引
minIndex = i;
// 尋找第i個(gè)小的數(shù)值
for(var j = i + 1; j < Array.length; ++j)
{
if (Array[j] < Array[minIndex])
{
minIndex = j;
}
}
//可以加一個(gè)判斷minIndex != i,或許可以提升一點(diǎn)效率周荐,不加也可以
// 將找到的第i個(gè)小的數(shù)值放在第i個(gè)位置上
if (minIndex != i)
{
temp = Array[minIndex];
Array[minIndex] = Array[i];
Array[i] = temp;
}
}
}
selectSort(arr);
console.info(arr);