鱼C论坛

 找回密码
 立即注册
查看: 2872|回复: 1

[技术交流] 数据结构与算法--冒泡排序算法有问题

[复制链接]
发表于 2015-3-28 14:11:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zlQhs 于 2015-3-28 14:14 编辑

代码如下:
  1. #include "stdafx.h"
  2. #include <iostream>

  3. #define DATA_SIZE 14

  4. void BubbleSort1(int data[], int iDataSize)
  5. {
  6.         int iTemp = 0;
  7.         int iCompareCount = 0;
  8.         int iMoveCount = 0;
  9.         for ( int i = 0; i < iDataSize - 1; i++)
  10.         {
  11.                 for ( int j = i + 1; j < iDataSize; j++)
  12.                 {
  13.                         iCompareCount++;
  14.                         if ( data[i] > data[j] )
  15.                         {
  16.                                 iMoveCount++;
  17.                                 iTemp = data[j];
  18.                                 data[j] = data[i] ;
  19.                                 data[i] = iTemp;
  20.                         }
  21.                 }
  22.         }
  23.         printf("第一种冒泡排序:\n排序进行了%d次比较,进行了%d次移动\n", iCompareCount, iMoveCount);
  24. }

  25. void BubbleSort2(int data[], int iDataSize)
  26. {
  27.         int iTemp = 0;
  28.         int iCompareCount = 0;
  29.         int iMoveCount = 0;
  30.         for ( int i = 0; i < iDataSize - 1; i++)
  31.         {
  32.                 for ( int j = iDataSize - 1; j > i; j--)
  33.                 {
  34.                         iCompareCount++;
  35.                         if ( data[j - 1] > data[j] )
  36.                         {
  37.                                 iMoveCount++;
  38.                                 iTemp = data[j - 1];
  39.                                 data[j - 1] = data[j] ;
  40.                                 data[j] = iTemp;
  41.                         }
  42.                 }
  43.         }
  44.         printf("第二种冒泡排序:\n排序进行了%d次比较,进行了%d次移动\n", iCompareCount, iMoveCount);
  45. }

  46. void BubbleSort3(int data[], int iDataSize)
  47. {
  48.         int iTemp = 0;
  49.         int iCompareCount = 0;
  50.         int iMoveCount = 0;
  51.         bool bFlag = true;

  52.         for ( int i = 0; i < iDataSize - 1 && bFlag; i++)
  53.         {
  54.                 for ( int j = iDataSize - 1; j > i; j--)
  55.                 {
  56.                         iCompareCount++;
  57.                         bFlag = false;
  58.                         if ( data[j - 1] > data[j] )
  59.                         {
  60.                                 iMoveCount++;
  61.                                 iTemp = data[j - 1];
  62.                                 data[j - 1] = data[j] ;
  63.                                 data[j] = iTemp;
  64.                                 bFlag = true;
  65.                         }
  66.                 }
  67.         }
  68.         printf("第三种冒泡排序:\n排序进行了%d次比较,进行了%d次移动\n", iCompareCount, iMoveCount);
  69. }

  70. void printResult(int data[], int iDataSize)
  71. {
  72.         printf("排序后的结果是:");
  73.         for ( int i = 0; i < iDataSize; i++)
  74.         {
  75.                 printf("%d ", data[i]);
  76.         }
  77.         printf("\n\n");
  78. }

  79. void sort1()
  80. {
  81.         int data[DATA_SIZE] = {3,6,1,4,2,5,9,33,8,1,22,32,11,18};
  82.         BubbleSort1(data, DATA_SIZE);
  83.         printResult(data, DATA_SIZE);
  84. }

  85. void sort2()
  86. {
  87.         int data[DATA_SIZE] = {3,6,1,4,2,5,9,33,8,1,22,32,11,18};
  88.         BubbleSort2(data, DATA_SIZE);
  89.         printResult(data, DATA_SIZE);
  90. }

  91. void sort3()
  92. {
  93.         int data[DATA_SIZE] = {3,6,1,4,2,5,9,33,8,1,22,32,11,18};
  94.         BubbleSort3(data, DATA_SIZE);
  95.         printResult(data, DATA_SIZE);
  96. }

  97. int _tmain(int argc, _TCHAR* argv[])
  98. {
  99.         sort1();
  100.         sort2();
  101.         sort3();

  102.         getchar();
  103.         return 0;
  104. }
复制代码


运行结果如下:

QQ截图20150328140858.png


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-20 19:23:45 | 显示全部楼层
老师 当数组是  int[] a = new int[]{0,1,30,14,5,6,7,81,9,2222};  第三种冒充排序是错的吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 22:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表