插入排序
概念: 插入排序,顾名思义,在一组序列当中插入一个数,前提是在要插入数字的序列本身顺序是正确的,且插入数字后序列的顺序仍然有序。
思考方式: 如果要将一个数字插入到某一个数列当中,会将此数字与数列当中的所有数字进行比较过后插入。如果此这个数列的顺序是正确的,那么,只需用这个需要插入的数字按照顺序插入即可。 在javascript中,即将该数字在数组中得下标改为在它位置后一位数字的下标。
1 var numArr = [1,5,9,7,8,0,3,5,7,6,4];
//定义一个无序数组 2 for(i=0;i<numArr.length;i++){ 3 var sub = i; 4 var temp = numArr[sub] //把下标和数组中下标对应的数字保存 5 while(temp<numArr[sub-1]&&sub>0){//相邻两个数字进行比较 6 numArr[sub] =numArr[sub-1];//互换位置 7 sub--; //下标减1 8 } 9 numArr[sub]= temp; //如果两个数字的序列调换之后,将两个数字的位置进行调换。 10 } 11 console.log(array) //打印进行检查
冒泡排序
概念:通过一次次遍历之后,最大的数字会慢慢浮到最上面,因此得名。
思考方式:一组无序列表,通过遍历整个数组按照顺序两两对比后进行排序。遍历一次之后,可以确定一个数字的准确位置,多次排序后进行整个数组的顺序排列,在进行数组元素多的情况下,效率较低。
var numArr = [1,5,9,7,8,0,3,5,7,6,4]; //声明一个数组 for(var i=0;i<numArr.length;i++){// 外围循环代表从第几个数开始比较 for(var j=0;j<numArr.length-i-1;j++){//里面循环代表对比的次数 if(numArr[J]<numArr[j+1]){//相邻数字进行比较 var temp = numArr[j];// 对比后交换相邻数字的位置 numArr[j] = numArr[j+1]; numArr[j+1] = temp; } } }
选择排序
概念:从需要排序的数组中选出最小的(或者最大的)数字放在第一位,直到排序完成。
思考方式:从需要排序的数组中选择一个数字,与数组中的其他数字进行比较,如果有比它大得就是用比它大的那个数字继续进行比较,遍历一边数组后得到一个最大或者最小值,放在第一位,依次选择,直到排序完成。
var numArr = [23,52,71,8,1111,64,9,0,2121,10,552,98,1]; for(var i=0;i<numArr.length;i++){ var min = i; //保存索引值 for(var j=i+1;j<numArr.length;j++){ if(numArr[min]>numArr[j]){//判断是否是最小的 min =j //最小的索引值赋给 min } } var temp = j //找到最小的值后跟第i个换位置 numArr[i] = numArr[min] numArr[min] = num[j] }