//1.选择排序: //从小到大排序:通过比较首先选出最小的数放在第一个位置上,然后在其余的数中选出次小数放在第二个位置上,依此类推,直到所有的数成为有序序列。 var arr2=[19, 8, 27, 6, 15, 4]; for(var i=0;i<arr2.length-1;i++){ for(var j=i+1;j<arr2.length;j++){ if(arr2[j]<arr2[i]){ var temp=arr2[j]; arr2[j]=arr2[i]; arr2[i]=temp; } } } console.log(arr2);//4,6,8,15,19,27 /* * //第一轮:第一个数字和后面的每一位进行比较,选择出最小的一个放在第一位上。 [8, 19, 27, 6, 15, 4] //8和19比较选择出8放在第一位 [8, 19, 27, 6, 15, 4] //8和27比较选择出8放在第一位 [6, 19, 27, 8, 15, 4] //8和6比较选择出6放在第一位 [6, 19, 27, 8, 15, 4] //6和15比较选择出6放在第一位 [4, 19, 27, 8, 15, 6] //6和4比较选择出4放在第一位 //第二轮:第二个数字和后面的每一位进行比较,选择出最小的一个放在第二位上。 [4, 19, 27, 8, 15, 6] //19和27比较选择出19放在第二位 [4, 8, 27, 19, 15, 6] //19和8比较选择出8放在第二位 [4, 8, 27, 19, 15, 6] //8和15比较选择出8放在第二位 [4, 6, 27, 19, 15, 8] //8和6比较选择出6放在第二位 * //第三轮:第三个数字和后面的每一位进行比较,选择出最小的一个放在第三位上。 [4, 6, 19, 27, 15, 8] //27和19比较选择出19放在第三位 [4, 6, 15, 27, 19, 8] //19和15比较选择出15放在第三位 [4, 6, 8, 27, 15, 19] //15和8比较选择出8放在第三位 //第四轮:第四个数字和后面的每一位进行比较,选择出最小的一个放在第四位上。 [4, 6, 8, 15, 27, 19] //27和15比较选择出15放在第四位 [4, 6, 8, 15, 27, 19] //15和19比较选择出15放在第四位 // 第五轮:第五个数字和后面的每一位进行比较,选择出最小的一个放在第五位上。 [4, 6, 8, 15,19, 27] //27和19比较选择出19放在第五位 */
//2.冒泡排序: 从头到尾,比较相邻的两个元素的大小,如果符合交换条件,交换两个元素的位置。每一轮比较中,都会选出一个最大的数,放在正确的位置 var arr = [19, 8, 27, 6, 15, 4]; for(var i=0;i<arr.length;i++){ for(var j=0;j<arr.length-i;j++){ //因为每一轮比较都会选择出最大的一位放在最后,下次再次比较时不用和已经选择出的进行比较,所以才会有 j<arr.length-i ; if(arr[j]>arr[j+1]){ //如果前面的数比后面的数大,定义一个临时变量来交换两个数的位置。 var temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } console.log(arr);// 4,6,8,15,19,27 //从小到大排序: /* * //第一轮: [8, 19, 27, 6, 15, 4] [8, 19, 27, 6, 15, 4] [8, 19, 6, 27, 15, 4] [8, 19, 6, 15, 27, 4] [8, 19, 6, 15, 4, 27] // 第一轮选出了最大的元素27放在了数组的最后一位 //第二轮: [8, 19, 6, 15, 4, 27] [8, 6, 19, 15, 4, 27] [8, 6, 15, 19, 4, 27] [8, 6, 15, 4, 19, 27] //第二轮选出了最大的元素19放在了数组的倒数第二位 * //第三轮: [6, 8, 15, 4, 19, 27] [6, 8, 15, 4, 19, 27] [6, 8, 4, 15, 19, 27] //第三轮选出了最大的元素15放在了数组的倒数第三位 //第四轮: [6, 8, 4, 15, 19, 27] [6, 4, 8, 15, 19, 27] // 第四轮选出了最大的元素8放在了数组的倒数第四位 // 第五轮: [4, 6, 8, 15, 19, 27] // 第五轮选出了最大的元素6放在了数组的第二位 */