JavaScript算法描述(一)

时间:2022-03-12 13:59:50
function swap(arr,index1,index2){
var temp=arr[index1];
arr[index1]=arr[index2];
arr[index2]=temp;
}

冒泡排序

冒泡排序算法,它是最慢的排序算法之一,但也是一种最容易实现的排序算法。
之所以叫冒泡排序,是因为进行算法排序是,数据值会像气泡一样从数组的一端漂浮到另一端。
PS:逐个相邻的两个比较,将较大的往右浮动,从而第一轮得到最大的值放置最右边。依次类推,第二轮得到第二大的值放置右侧倒数第二的位置。最终得到从左到右依次递增的序列。

function bubbleSort(arr){
var numElements=arr.length;
var temp;
//n个数排序,只用进行n-1趟
for(var outer=1; outer<=numElements-1; outer++){
for(var inner=0; inner<=numElements-outer; inner++){
if(arr[inner]>arr[inner+1]){
swap(arr,inner,inner+1);
}
}
}
}

选择排序

选择排序算法,选择排序会用到嵌套循环,从数组的开头开始,将第一个元素和其他元素进行比较。检查完所有元素后。最小的元素会被放到数组的第一个位置,然后算法会从第二个位置继续。这个过程一直进行,当进行到数组的倒数的第二个位置时,所有的数据便完成了排序。

function selectionSort(arr){
var min,temp;
for(var outer=0; outer<=arr.length-2; outer++){
min=outer;
for(var inner=outer+1; inner<=arr.length-1; inner++){
if(arr[inner]<arr[min]){
swap(arr,inner,min);
}
}
}
}

插入排序

插入排序通过将较大的数组元素移动到右侧,为数组左侧的较小元素腾出位置。

function insertionSort(arr){
var temp,inner;
for(var outer=1; outer<=arr.length-1; ++outer){
temp=arr[outer];
inner=outer;
while(inner>0 && (arr[inner-1]>=temp)){
arr[inner]=arr[inner-1];
--inner;
}
arr[inner]=temp;
}
}