[Sort]冒泡排序

来源:互联网 发布:研究生课程表软件 编辑:程序博客网 时间:2024/06/06 18:57
#include <iostream>using namespace std;/* * C - compare times * M - move times * * 如果是正序的,一趟扫描即可完成排序,所需的关键字比较次数C和记录移动次数M均达到最小值 * Cmin = n-1 , Mmin = 0; * 即冒泡排序最好的时间复杂度是 O(n) * * 如果初始文件是反序的,需要进行n-1趟排序。每趟排序需要进行n-i次关键字比较,且每次比较都必须 * 移动记录三次来达到交换记录位置,在这种情况下,比较和移动次数均达到最大值。 * * Cmax = n(n-1)/2 = O(n^2); * Mmax = 3n(n-1)/2 = O(n^2); * 冒泡排序最坏的时间复杂度是O(n^2) * * 综上,冒泡排序的平均复杂度是O(n^2) * * 冒泡排序是稳定的排序,相等的数值的前后顺序保持一致。 */void BubbleSort(int nums[], int n){    int i, j = 0;    for(i = 0; i < n-1; i++)    {        for(j = 0; j < n-i-1; j++)        {            if(nums[j] > nums[j+1])            {                swap(nums[j],nums[j+1]);            }        }    }}void print(int nums[], int n){    for(int i = 0; i < n; i++)    {        cout<<nums[i]<<endl;    }}int main(){    int nums[10] = {10,44,22,47,88,43,55,99,64,109};    BubbleSort(nums,10);    print(nums,10);    return 0;}
0 0
原创粉丝点击