八大排序算法-简单排序
javascript-选择排序
算法思想:简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素,并将其作为首元素(如果位置不对则交换),直到所有元素排完为止,简单选择排序是不稳定排序。
1、第一趟通过设置岗哨:min=0。
2、遍历下标为min+1----len-1位置与min位置的数比较。(如果小于岗哨则交换位置)
3、当轮循环结束之后,那这个变量存储的就是当前最小元素的下标。
4、第二趟岗哨加1,重复2、3、直到第len-1趟
function swap(array, i, j){//两个数调换
var temp =array[j];
array[j]=array[i];
array[i]=temp;
};
function selectSort(arr){
var min;
var len=arr.length;
for(var i=0;i<len;i++){
min=i;
for(var j=i+1;j<len;j++){
if(arr[min]>arr[j]){
swap(arr,min,j);}
}
}
return arr;
}
var arr1 = [3, 5, 2, 4, 8, 6];
console.log(selectSort(arr1));//[ 2, 3, 4, 5, 6, 8 ]
jacascript-冒泡排序
算法思想:
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。进行n趟扫描要排序的数列,每一趟比较确定最后一个位置的数,一次比较两个元素,如果他们的顺序错误就把他们交换过来。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
算法步骤:
1、第一趟从下标为0开始比较与其相邻的元素。如果第一个比第二个大,就交换他们两个。
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数,此时一趟结束确定最大的元素在最后的位置。
3)针对所有的元素重复1、2、的步骤,除了最后一个。
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
function swap(array, i, j){//两个数调换
var temp =array[j];
array[j]=array[i];
array[i]=temp;
};
function bubbleSort(arr) {
var p = arr.length - 1;
var flag;
for (var i = p; i > 0; i--) {
flag = 0;
//每趟的排序后将标识置0
for (var j = 0; j < p; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr,j,j+1);
flag = 1;
}
}
if (flag = 0) break; //全程无交换时退出
}
return arr;
}
var arr1 = [3, 5, 2, 4, 8, 6];
console.log(bubbleSort(arr1));``
jacascript-插入排序
主要算法思想:
插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于每一个未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
算法步骤:
1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列(从后到前扫描,如果当前元素小于(保证当前位置最大)扫描元素,则交换位置)的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
//从小到大
function insertSort(arr){
var len=arr.length;
var tmp;
for(var i=1;i<len;i++){
tmp=arr[i];
for(var j=i;j>0&&tmp<arr[j-1];j--){
arr[j]=arr[j-1];
arr[j-1]=tmp;
}
}
return arr;
}
var arr1 = [3, 5, 2, 4, 8, 6];
console.log(insertSort(arr1));//[ 2, 3, 4, 5, 6, 8 ]
//方式2
function swap(array, i, j){//两个数调换
var temp =array[j];
array[j]=array[i];
array[i]=temp;
};
//从小到大
function insertSort(arr){
var len=arr.length;
for(var i=1;i<len;i++){
for(var j=i;j>0&&arr[j]<arr[j-1];j--){
swap(arr,j,j-1);
}
}
return arr;
}
var arr1 = [3, 5, 2, 4, 8, 6];
console.log(insertSort(arr1));//[ 2, 3, 4, 5, 6, 8 ]