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

    原理:依次比较相邻的两个元素,每次比较完毕最大的一个数跑到本轮的末尾(开始)。
    时间复杂度:O(n^2 )


    实现步骤:
    假设存在数组:72, 54, 59, 30, 31, 78, 2, 77, 82, 72 
    第一轮比较相邻两个元素,如果左边元素大于右边元素,则交换。 
    72和54比较的结果就是,54在前,72在后; 
    然后72和59比较的结果,59在前,72在后; 
    以此类推,第一轮比较之后的结果是:54, 59, 30, 31, 72, 2, 77, 78, 72, 82 
    经过第一轮比较,最大的元素跑到了最后一个,所以第二轮比较,最后一个元素不需要进行比较了。  
    第二轮还是从索引0和1开始比较,只是不许要比较最后一个了,算法还是一样的。第三轮、第四轮以此类推。 
    排序之后的结果:2, 30, 31, 54, 59, 72, 72, 77, 78, 82 


    c#脚本实现:

        int temp = 0;
        for (int i = list.Count; i > 0; i--)
        {
            for (int j = 0; j < i - 1; j++)
            {
                if (list[j] > list[j + 1])
                {
                    temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                }
            }
        }
    一直想把之前工作、学习时记录的文档整理到博客上,一方面温故而知新,一方面和大家一起学习 -程序小白
  • 相关阅读:
    [HNOI2002]营业额统计
    HDU 1374
    HDU 3345
    HDU 2089
    Graham扫描法
    Codeforces 1144D Deduction Queries 并查集
    Codeforces 916E Jamie and Tree 线段树
    Codeforces 1167F Scalar Queries 树状数组
    Codeforces 1167E Range Deleting
    Codeforces 749E Inversions After Shuffle 树状数组 + 数学期望
  • 原文地址:https://www.cnblogs.com/wang-jin-fu/p/8321176.html
Copyright © 2011-2022 走看看