冒泡排序--JavaScript描述

匿名 (未验证) 提交于 2019-12-02 21:53:52

  相信凡是编程入门的都接触过冒泡排序算法,排序算法在编程中经常用到。

1. code

 1     /**  2      *  冒泡排序  3      *      1、比较的轮数等于总数 - 1  4      *      2、比较次数等于要比较的个数 - 1  5      *          --比较从第一个到最后一个  6      *          --每一轮比较完得到一个最终值、不参与下一次比较  7      *  8      * */  9  10     /** 11     *   最大时间复杂度 O(n^2) 12     *   空间复杂度 O(1) 13     * */ 14     var arr = [10, 0, 100, 20, 60, 30]; 15     var temp; 16     /** 17      *  从大到小 18      * **/ 19     /*  控制循环比较的轮数   */ 20     for (var i = 0; i < arr.length  - 1; i++) { 21         /*  控制每一轮比较的次数   */ 22         for (var j = 0; j < arr.length - 1 - i; j++) { 23             if(arr[j] < arr[j + 1]){ 24                 temp = arr[j]; 25                 arr[j] = arr[j + 1]; 26                 arr[j + 1] = temp; 27             } 28         } 29     } 30     // alert(arr); 31     console.log("从小到大 :" + arr); 32     /** 33      * 从小到大 34      * */ 35     var arr2 = [10, 0, 100, 20, 60, 30]; 36     /*  控制比较的轮数 */ 37     for (var i = 0; i < arr2.length - 1; i++) { 38         /* 控制比较的次数*/ 39         for (var j = 0; j < arr2.length - 1 - i; j++) { 40             if(arr2[j] > arr2[j + 1]){ 41                 temp = arr2[j]; 42                 arr2[j] = arr2[j + 1]; 43                 arr2[j + 1] = temp; 44             } 45         } 46     } 47     console.log("从大到小 :" + arr2)

2. 算法分析

(1)时间复杂度

C和记录移动次数M均达到最小值:

所以,冒泡排序最好的时间复杂度为 O(n)。

 若初始文件是反序的,需要进行n-1 趟排序。每趟排序要进行n-i次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:

冒泡排序的最坏时间复杂度为O(n^2)

综上,因此冒泡排序总的平均时间复len杂度为O(n^2)

(2)算法稳定性

 1 function bubbleSort(arr) {  2     var i = arr.length, j;  3     var tempExchangVal;  4     while (i > 0) {  5         for (j = 0; j < i - 1; j++) {  6             if (arr[j] > arr[j + 1]) {  7                 tempExchangVal = arr[j];  8                 arr[j] = arr[j + 1];  9                 arr[j + 1] = tempExchangVal; 10             } 11         } 12         i--; 13     } 14     return arr; 15 } 16   17 var arr = [3, 2, 4, 9, 1, 5, 7, 6, 8]; 18 var arrSorted = bubbleSort(arr); 19 console.log(arrSorted); 20 alert(arrSorted);

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!