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

    冒泡排序,即对相邻的元素进行两两比较,两个元素顺序相反的话,就进行交换;这样每经过一次排序就会将最小的或最大的元素“冒”到顶端,最终完成排序。

      具体步骤:1)比较前后相邻的两个数据,如果前面的数据大于后面对数据,就将这两个数据进行交换;

           2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大一个数据就“沉”到数组的N-1个位置;

           3)N=N-1,如果N不等于0的话,就重复上述1)2)步骤,否则排序完成。

      时间复杂度:若原数组本身就是有序的,仅需N-1次就可以完成排序;如果是倒序的比较次数为N-1+N-2+...+1=N(N-1)/2次,交换次数与比较次数等值。

            冒泡排序的平均时间复杂度为:O(n^2)

      空间复杂度:没有利用新的数组来辅助完成排序,冒泡排序的空间复杂度为O(1)

      图解:

    下面看一下具体实现的代码:

     

    Java实现冒泡排序

        1.第一种方法

     1 public class BubbleSort {
     2   public static void main(String[] args) {
     3     int[] arr={6,3,8,2,9,1};
     4     System.out.println("排序前数组为:");
     5     for(int num:arr){
     6       System.out.print(num+" ");
     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           int temp=arr[j];
    12           arr[j]=arr[j+1];
    13           arr[j+1]=temp;
    14         }
    15       }
    16     } 
    17     System.out.println();
    18     System.out.println("排序后的数组为:");
    19      for(int num:arr){
    20        System.out.print(num+" ");
    21      } 
    22   }
    23  }

     

        2.第二种方法

     1 public static void BubbleSort1(int [] a, int n){
     2     int i, j;
     3     for(i=0; i<n; i++){//表示 n 次排序过程。
     4         for(j=1; j<n-i; j++){
     5             if(a[j-1] > a[j]){//前面的数字大于后面的数字就交换
     6                 //交换 a[j-1]和 a[j]
     7                 int temp;
     8                 temp = a[j-1];
     9                 a[j-1] = a[j];
    10                 a[j]=temp;
    11             }
    12        } 
    13     } 
    14 }    

     

    C语言实现冒泡排序

     1 #include <iostream>
     2 void BubbleSort(int *arr,int n){
     3     for(int i=0;i<n;i++){
     4         int flag = 0;
     5         for(int j=0;j<n-1;j++){
     6             if(arr[j]>arr[j+1]){
     7                 int t = arr[j];
     8                 arr[j] = arr[j+1];
     9                 arr[j+1] = t;
    10                 flag = 1;
    11             }
    12         }
    13         if(!flag) break;
    14     }    
    15 }
    16 int main() {
    17     int arr[8] = {3,2,5,8,4,7,6,9};
    18     int n = 8;
    19     bubbSort(arr,n);
    20     for(int i=0;i<n;i++) {
    21         printf("%d ",arr[i]);
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
    用Recycle()方法对Java对象的重要性
    Lotus中千奇百怪的 $$
    Developing a simple application using steps "User Decision" and "Mail"(1) 沧海
    沟通中的情绪管理(演讲稿) 沧海
    人只有在压力之下,才可能成功,没做一件事,都必须成功,不许言败 沧海
    什么是IDOC,以及IDOC的步骤 沧海
    VS2008 Professional Edition CHS中的deffactory.dat读取错误 沧海
    Including custom text in the step "User Decision" 沧海
    SAP Upgrade Strategy 沧海
  • 原文地址:https://www.cnblogs.com/HuiH/p/11661258.html
Copyright © 2011-2022 走看看