• 冒泡算法


    代码
    using System;
    using System.Collections.Generic;

    public class MyClass
    {
        
    public static void Main()
        {
            
    int[] data={1,2,3,4,5,6,7,8,9};
            BubbleSort(data);
            Console.ReadLine();
        }
        
        
    public static void BubbleSort(int[] data)
        {
            
    int temp;

            
    for(int i=0;i<data.Length;i++)
            {        
                
    bool result=true;
                
    for(int j=data.Length-1;j>i;j--)
                {
                    
    if(data[j-1]>data[j])
                    {
                        result
    =false;
                        temp
    =data[j-1];
                        data[j
    -1]=data[j];
                        data[j]
    =temp;
                    }
                }
                
    if(result)
                {
                    
    break;
                }
            }
            
    for(int i=0;i<data.Length;i++)
            {
                Console.WriteLine(data[i].ToString());
            }
        }
    }

    冒泡排序算法的最好情况是记录已全部排好序,这时,循环n-1次,每次循环都因没有数据交换而退出。因此,冒泡排序算法在最好情况下的时间复杂度为O(n)。冒泡排序算法的最坏情况是记录全部逆序存放,这时,循环n-1次,总比较次数为:
    总的移动次数为比较次数的3倍,因为被进行一次比较,需要进行3次移动。因此,冒泡排序算法在最坏情况下的时间复杂度为O(n2)。
    冒泡排序算法只需要一个辅助空间用于交换记录,所以,冒泡排序算法是一种稳定的排序方法。

  • 相关阅读:
    mysql数据库中的锁
    HihoCoder
    旅游规划(双权连通图)
    单调栈的原理
    战争联盟(并查集)
    点赞狂魔(巧用STL容器事半功倍)
    这是二叉搜索树吗?
    好像是两种权的dijkstra
    pat--046.整除光棍(除法模拟)
    幸运数字 2
  • 原文地址:https://www.cnblogs.com/mikechang/p/1722797.html
Copyright © 2020-2023  润新知