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

    【原理】
    它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾。 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止。
     
    【复杂度】

    冒泡排序的时间复杂度是O(n2),空间复杂度是O(n),是一种稳定的排序算法。

    需要注意的是:每一轮冒泡后,最后一个数必然是这一轮排序完的最大值,下一轮不必再参与冒泡。所以,内部循环的上限是size-i-1。

    【代码】

    #include<iostream>
    using namespace std;
    
    template<class T>
    void bubble_sort(T Array[],const int size)
    {
        T temp;//中间变量
        int flag;//用于标记
    
        for(int m=0;m<size-1;m++)//冒泡排序的关键代码,外部循环确定边界(即循环的最大值)
        {
            flag=0;
            for(int n=0;n<size-1-m;n++)
            {
                if(Array[n]>Array[n+1])//内部循环用于比较和交换数据
                {
                    temp=Array[n];
                    Array[n]=Array[n+1];
                    Array[n+1]=temp;
                    flag=1;//若发生交换,则标记置1
                }
            }
            if(flag==0)
            {
                break;//若没发生交换,则说明数列已有序
            }
        }
    }
    
    int main()
    {
        int temp;//中间变量
        int a[10];
        cout<<"please input 10 numbers: "<<endl;
        for(int i=0;i<10;i++)//输入原始数组
        {
            cin>>a[i];
        }
    
        bubble_sort(a,sizeof(a)/sizeof(int));
    
        for(int j=0;j<10;j++)//输出排序后的数组
        {
            cout<<a[j]<<" ";
        }
        return 0;
    }
  • 相关阅读:
    Linux的chattr与lsattr命令详解
    Ant_的最完整build.xml解释
    ant安装和验证
    MySQL ALTER TABLE: ALTER vs CHANGE vs MODIFY COLUMN
    python简单爬虫技术
    selenium自动化测试打开新标签窗口
    js中的相等与不等运算
    table-layout:fixed 属性的解说
    DWZ与KindEditor编辑器的整合
    DWZ框架学习
  • 原文地址:https://www.cnblogs.com/jixiaowu/p/3904099.html
Copyright © 2011-2022 走看看