• 冒泡排序


    冒泡排序(Bubble Sort)是一种简单的排序算法,由于它的简洁,冒泡排序通常被用来对于程序设计入门的学生介绍算法的概念。冒泡排序的思想是重复地走访过要排序的数列,一次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行到没有元素需要交换,也就是说该数列已经排序完成。算分名字的由来是因为越小的元素会经过交换慢慢的“浮”到数列的顶端。


    冒泡排序算法基本步骤(升序):

    1.比较相邻的元素。如果第一个比第二大,则交换二者。

    2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。此步完成后,最后的元素就是最大的数。

    3.针对所有的元素重复以上的步骤,除了最后一个。

    4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。


    冒牌排序演示图:


    代码实现:

    C语言代码:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 #define N 10
     5 
     6 int main()
     7 {
     8     int i, j, temp;
     9     int arr[N] = {36, 58, 12, 59, 65, 96, 39, 68, 24, 86};
    10     for(i=0; i<N-1; i++) {
    11         for(j=0; j<N-1-i; j++) {
    12             if(arr[j] > arr[j+1]) {
    13                 temp = arr[j];
    14                 arr[j] = arr[j+1];
    15                 arr[j+1] = temp;
    16             }
    17         }
    18     }
    19     for(i=0; i<N; i++) {
    20         printf("%-3d", arr[i]);
    21     }
    22     printf("
    ");
    23     return 0;
    24 }

     Java代码:

     1 public class BubbleSort {
     2     
     3     public static void main(String[] args) {
     4         
     5         int temp = 0;
     6         int arr[] = {36, 58, 12, 59, 65, 96, 39, 68, 24, 86};
     7         
     8         for(int i=0; i<arr.length-1; i++) {
     9             for(int j=0; j<arr.length-1-i; j++) {
    10                 if(arr[j] > arr[j+1]) {
    11                     temp = arr[j];
    12                     arr[j] = arr[j+1];
    13                     arr[j+1] = temp;
    14                 }
    15             }
    16         }
    17         
    18         for(int i=0; i<arr.length; i++) {
    19             System.out.print(arr[i]+ " ");
    20         }        
    21     }
    22 }

    算法优化:增加有序标志,内层循环比较一次完成,若未发生交换,则已有序,排序结束。

    C语言代码:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 #define N 10
     5 
     6 int main()
     7 {
     8     int i, j, temp, isSorted;
     9     int arr[N] = {36, 58, 12, 59, 65, 96, 39, 68, 24, 86};
    10     for(i=0; i<N-1; i++) {
    11         isSorted = 1;
    12         for(j=0; j<N-1-i; j++) {
    13             if(arr[j] > arr[j+1]) {
    14                 temp = arr[j];
    15                 arr[j] = arr[j+1];
    16                 arr[j+1] = temp;
    17                 isSorted = 0;
    18             }
    19         }
    20         if(isSorted){
    21             break;
    22         }
    23     }
    24     for(i=0; i<N; i++) {
    25         printf("%-3d", arr[i]);
    26     }
    27     printf("
    ");
    28     return 0;
    29 }

    Java代码:

     1 public class BubbleSort {
     2     
     3     public static void main(String[] args) {
     4         
     5         int temp = 0;
     6         boolean isSorted = true;
     7         int arr[] = {36, 58, 12, 59, 65, 96, 39, 68, 24, 86};
     8         
     9         for(int i=0; i<arr.length-1; i++) {
    10             isSorted = true;
    11             for(int j=0; j<arr.length-1-i; j++) {
    12                 if(arr[j] > arr[j+1]) {
    13                     temp = arr[j];
    14                     arr[j] = arr[j+1];
    15                     arr[j+1] = temp;
    16                     isSorted = false;
    17                 }
    18             }
    19             if(isSorted) {
    20                 break;
    21             }
    22         }
    23         
    24         for(int i=0; i<arr.length; i++) {
    25             System.out.print(arr[i]+ " ");
    26         }        
    27     }
    28 }

    参考资料:维基百科

    转载请注明出处:http://www.cnblogs.com/michaelwong/p/4114938.html


  • 相关阅读:
    eclipse写javaee的时候js文件新增函数找不到
    baidu春招题:熊回家
    java自定义容器排序实现接口
    Thread主体和执行主体
    jqurey定位 id
    c中二维数组与指针访问
    ubuntu上浏览器上不了网
    前端经典面试题
    HTML,CSS,JS试题
    CSS3实现文字浮雕效果,镂刻效果,火焰文字
  • 原文地址:https://www.cnblogs.com/michaelwong/p/4114938.html
Copyright © 2020-2023  润新知