zoukankan      html  css  js  c++  java
  • 排序算法4--交换排序--冒泡排序

    冒泡排序

    冒泡排序属于交换排序、交换排序的思想是:两两比较待排序记录的关键字,一旦发现两个记录不满足次序要求时则进行交换,直到整个序列全部满足要求为止。快速排序是在冒泡排序的基础上进行改进得到的

    1.冒泡排序法是两两依次比较,并做交换,交换的次数多。

         冒泡法(每次是相邻的两个比较大小,每一轮都会选出当前的最大的数沉到最下面)

        例如:

      原始队列: 3 5 6 2 4 1(3,5,比较不交换;56比较不交换;62比较交换;64比较交换;61比较交换)
      第一次:  3 5 2 4 1 6 (35比较不交换;52比较交换;54比较交换;51比较交换;56比较不交换)
      第二次:  3 2 4 1 5 6 
      第三次:  2 3 1 4 5 6 
      第四次:  2 1 3 4 5 6 
      第五次:     1 2 3 4 5 6

        2.时间复杂度

       最好情况(初试序列是正序):只需要进行一趟排序

         最坏情况(初试序列是逆序):需要进行n-1趟排序

         平均时间复杂度O(n*n),空间复杂度O(1)

            具体时间复杂度等分析,请参考:http://www.cnblogs.com/zhangxue521/p/6748085.html

       3.算法特点:

      ①稳定排序②可用于顺序链式存储

    java实现:

     1 package 平时常用;
     2 
     3 import java.util.Scanner;
     4 
     5 public class _1冒泡排序 {
     6    public static void main(String[] args) {
     7        int a[] = new int[6];
     8          Scanner scanner = new Scanner(System.in);
     9          for (int i = 0; i < a.length; i++) {
    10             a[i] = scanner.nextInt();
    11          }
    12          
    13         for (int i = 0; i < a.length-1; i++) {
    14             for (int j = 0; j < a.length-1-i; j++) {
    15                 if (a[j] > a[j+1]) {
    16                     int temp = a[j];
    17                     a[j] = a[j+1];
    18                     a[j+1] = temp;
    19                 }
    20             }
    21             //测试每轮的排序结果
    22 //            for (int m : a) {
    23 //                System.out.print(m+" ");
    24 //            }
    25 //            System.out.println();
    26         }
    27         //输出结果
    28         for (int m : a) {
    29             System.out.print(m+" ");
    30         }
    31 }
    32 }

    js实现:

     1 function maoPaoSort(a){
     2     for (var i = 0; i < a.length-1; i++) {
     3             for (var j = 0; j < a.length-1-i; j++) {
     4                 if (a[j] > a[j+1]) {
     5                     var temp = a[j];
     6                     a[j] = a[j+1];
     7                     a[j+1] = temp;
     8                 }
     9             }
    10     }
    11 }
    12 var a = new Array(7,2,6,5,1,4,3);
    13 maoPaoSort(a);
    14 document.write("_4冒泡排序"+a+"<br />");

    python实现:

    1 def maopaoSort(listNums):
    2     length = len(listNums)
    3     for i in range(0,length-1):
    4         for j in range(0,length-1-i):
    5             if listNums[j] > listNums[j+1]:
    6                 listNums[j], listNums[j + 1] = listNums[j + 1], listNums[j]
    7     return listNums
  • 相关阅读:
    【WP8】关于类库本地化问题
    【WP8】富文本功能实现
    【WP8】换肤功能的实现
    【WP8】图片缓存控件
    【WP8】图片压缩处理
    【WP8】让TextBox文本支持滑动(Scroll)
    <正则吃饺子> :关于Guava中 Joiner 和 Splitter 的简单使用
    <正则吃饺子> :关于前端往后端传递布尔值参数的问题
    <正则吃饺子>:关于使用powerDesign连接oracle数据库,导出数据表结构(ER图吧)
    <正则吃饺子>:关于集合的简单整理总结
  • 原文地址:https://www.cnblogs.com/zhangxue521/p/6748158.html
Copyright © 2011-2022 走看看