• 冒泡排序(交换排序的一种)


    思想:(升序)相邻两个比较大小,如果前者大于后者,则互换;第一趟下来,最大的数就到正确位置上了。依此类推……

    冒泡排序是交换排序的一种。

    代码:

     1 // BubbleSort.cpp : 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include <string.h>
     6 #define MAX_ARRAY_NUM 10
     7 void BubbleSort(int* i_Num)
     8 {
     9     int temp = 0;
    10     for (int i = 0; i < MAX_ARRAY_NUM - 1; i++)
    11     {
    12         for (int j = 0; j < MAX_ARRAY_NUM - i - 1; j++)
    13         {
    14             if (i_Num[j] > i_Num[j+1])
    15             {
    16                 temp = i_Num[j];
    17                 i_Num[j] = i_Num[j+1];
    18                 i_Num[j+1] = temp;
    19             }
    20         }
    21 
    22     }
    23     for (int i = 0; i < 10; i++)
    24     {
    25         printf("%d	", i_Num[i]);
    26     }
    27 }
    28 
    29 int _tmain(int argc, _TCHAR* argv[])
    30 {
    31     int aNum[10] = {9, 56, 45, 28, 78, 4, 8, 2, 0, 58};
    32 
    33     BubbleSort(aNum);
    34     return 0;
    35 }

    时间复杂度:

    第一趟排序需要比较n-1次,第二趟需要比较n-2次,……,最后一趟只需比较1次,因此复杂度为:(n-1)+(n-2)+……+2+1 = 1/2*n^2-1/2*n,去掉低阶项,去掉常数系数,即复杂度为O(n^2)。

    稳定性:

    稳定性指原来待排序的原序中间有相同的元素,在没有排序之前它们之间有先后顺序,在排完之后它们的先后顺序不变,就称为这个算法是稳定的。因此,冒泡是一个稳定的排序,因为如果两个元素值相同,则位置不进行交换。

  • 相关阅读:
    加解密工具类(含keystore导出pfx)
    Java使用数字证书加密通信(加解密/加签验签)
    关于javax.crypto.BadPaddingException: Blocktype错误的几种解决方法
    产生定长的随机数
    数字证书生成--加密密/加签验签
    随机指定范围内N个不重复的数
    sql2012还原sql2008备份文件语句
    uploadify API
    海量数据处理分析
    .net经验积累
  • 原文地址:https://www.cnblogs.com/cinvzi/p/8108251.html
Copyright © 2020-2023  润新知