冒泡排序、选择排序、插入排序,三种排序方式的简述


插入排序

概念:  插入排序,顾名思义,在一组序列当中插入一个数,前提是在要插入数字的序列本身顺序是正确的,且插入数字后序列的顺序仍然有序。

思考方式:  如果要将一个数字插入到某一个数列当中,会将此数字与数列当中的所有数字进行比较过后插入。如果此这个数列的顺序是正确的,那么,只需用这个需要插入的数字按照顺序插入即可。 在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]
       }

 

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM