1.冒泡排序

简介: 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;
}

目录
相关文章
|
6月前
|
搜索推荐 C++
C++冒泡排序的实现
C++冒泡排序的实现
|
6月前
|
搜索推荐
什么是冒泡排序
什么是冒泡排序
|
11月前
|
算法 搜索推荐 Python
冒泡排序
冒泡排序
66 1
|
搜索推荐 算法
15 冒泡排序
15 冒泡排序
43 0
|
算法 C#
C#之冒泡排序
C#之冒泡排序
49 0
|
算法 C语言
|
算法 搜索推荐 JavaScript