zoukankan      html  css  js  c++  java
  • 冒泡排序

    冒泡排序(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


  • 相关阅读:
    反转链表 16
    CodeForces 701A Cards
    hdu 1087 Super Jumping! Jumping! Jumping!(动态规划)
    hdu 1241 Oil Deposits(水一发,自我的DFS)
    CodeForces 703B(容斥定理)
    poj 1067 取石子游戏(威佐夫博奕(Wythoff Game))
    ACM 马拦过河卒(动态规划)
    hdu 1005 Number Sequence
    51nod 1170 1770 数数字(数学技巧)
    hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
  • 原文地址:https://www.cnblogs.com/michaelwong/p/4114938.html
Copyright © 2011-2022 走看看