zoukankan      html  css  js  c++  java
  • C/JS_实现冒泡排序

      冒泡排序算法的运作如下:(从后往前)

    1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
    3. 针对所有的元素重复以上的步骤,除了最后一个。
    4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    JavaScript实现

     1 var arr = prompt("请输入一个数组(以“,”隔开):").split(",").map(function(data){
     2     return +data;});
     3 console.log("输入的数组是:"+arr);
     4 
     5 function fun(arr){
     6     var i,j,temp;
     7     for(i = 0; i < arr.length; i++){
     8         for(j = 0; j < arr.length-1-i; j++){ //注意:j < arr.length-1-i;这里是减i。
     9             if(arr[j] > arr[j+1]){
    10                 temp = arr[j];
    11                 arr[j] = arr [j+1];
    12                 arr[j+1] = temp;
    13             }
    14         }
    15     }
    16     return arr;
    17 }
    18 
    19 console.log("排序后的数组是: "+fun(arr));

      优化:

     1 var arr = prompt("请输入一个数组(以“,”隔开):").split(",").map(function(data){
     2     return +data;});
     3 console.log("输入的数组是:"+arr);
     4 
     5 function fun(arr){
     6     var i,j,temp,flag=0;//这里
     7     for(i = 0; i < arr.length; i++){
     8         for(j = 0; j < arr.length-1-i; j++){ //注意:j < arr.length-1-i;这里是减i。
     9             if(arr[j] > arr[j+1]){
    10                 flag=1;//这里
    11                 temp = arr[j];
    12                 arr[j] = arr [j+1];
    13                 arr[j+1] = temp;
    14             }
    15         }
    16         if(flag==0)break;//这里
    17     }
    18     return arr;
    19 }
    20 
    21 console.log("排序后的数组是: "+fun(arr));

      C语言

     1 #include <stdio.h>
     2 void fun(int *arr,int size)
     3 {
     4     int i, j, temp;
     5     for(i=0; i<size; i++)
     6     {
     7         for(j=0; j<size-1-i; j++)
     8         {
     9             if(arr[j] > arr[j+1])
    10             {
    11                 temp = arr[j];
    12                 arr[j] = arr[j+1];
    13                 arr[j+1] = temp;
    14             }
    15         }
    16     }
    17 }
    18 
    19 int main()
    20 {
    21     int  arr[] = {4,3,5,6,1,2,10,9,8}, i, size;
    22     size = sizeof(arr)/sizeof(arr[0]);
    23     fun(arr,size);
    24     for(i=0; i<size; i++)
    25     {
    26         printf("%d  ",arr[i]);
    27     
    28     }    
    29     printf("
    ");
    30 }
  • 相关阅读:
    洛谷P3886 [JLOI2009]神秘的生物(插头dp)
    Leetcode 842 将数组拆分成斐波那契序列
    Leetcode 08.07 无重复字符串的排列组合
    Leetcode131 分割回文串
    Leetcode 516 最长回文子序列
    Leetcode08.12 N皇后
    Leetcode 813 最大平均值和分组
    Leetcode 79 单词搜索 二维平面上的回溯
    题解 洛谷 P4694 【[PA2013]Raper】
    跳表的基本认识
  • 原文地址:https://www.cnblogs.com/LinSL/p/7339490.html
Copyright © 2011-2022 走看看