找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 1179|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

C語(yǔ)言排序算法1.0

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:496423 發(fā)表于 2024-5-13 18:57 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
分享C語(yǔ)言寫的部分排序算法,還沒完善夠。
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. #define BUBBLE      0       //冒泡排序
  5. #define CHOOSE      1       //選擇排序



  6. //插入排序
  7. //希爾排序
  8. //歸并排序(迭代法)
  9. //歸并排序(遞歸法)
  10. //快速排序(迭代法)
  11. //快速排序(遞歸法)
  12. //雞尾酒排序
  13. //堆排序
  14. //計(jì)數(shù)排序
  15. //基數(shù)排序
  16. //桶排序
  17. int main(int argc,char *argv[])     //main函數(shù)的有參形式
  18. {
  19.     int arr[5] = {9,3,2,5,7};
  20.     int i = 0,j = 0;
  21.     int change_time = 0, time = 0, last_time = 0, tmp_index= 0, temp = 0;

  22.     system("cls");  //清屏

  23.     printf("原始數(shù)據(jù):");
  24.     for(i = 0; i < 5; i++)
  25.         printf(" %d",arr[i]);
  26.    
  27.     printf("\n");

  28. #if BUBBLE
  29.     printf("\033[36m冒泡排序:\n\033[0m");
  30.     {
  31.         change_time = 0;
  32.         time = 0;   //記錄排序次數(shù)
  33.         last_time = 0;

  34.         for(i = 0;i < 5 - 1; i++)
  35.         {
  36.             //每一次冒泡
  37.             for(j = 0;j < 5-1-i;j++)
  38.             {
  39.                 if(arr[j] > arr[j+1])
  40.                 {
  41.                     int temp = arr[j];
  42.                     arr[j] = arr[j+1];
  43.                     arr[j+1] = temp;

  44.                     time++;
  45.                 }
  46.             }

  47.             if(time == last_time)
  48.             {
  49.                 printf("排序完成,內(nèi)循環(huán)次數(shù):%d,交換次數(shù):%d\n",i+1,time);
  50.                 break;
  51.             }
  52.             last_time = time;
  53.         }
  54.     }
  55. #endif

  56. #if CHOOSE
  57.     printf("\033[36m選擇排序:\n\033[0m");
  58.     {
  59.         change_time = 0;
  60.         time = 0;   //記錄排序次數(shù)
  61.         last_time = 0;

  62.         for(i = 0;i < 5 - 1; i++)
  63.         {
  64.             tmp_index = i;   //tmp_index 此時(shí)代表最小值的下標(biāo)

  65.             for(j = i;j < 5;j++)
  66.             {
  67.                 if(arr[j] < arr[tmp_index])
  68.                 {
  69.                     tmp_index = j;

  70.                     time++;
  71.                 }
  72.             }

  73.             if(tmp_index != i)
  74.             {
  75.                 int temp = arr[tmp_index];
  76.                 arr[tmp_index] = arr[i];
  77.                 arr[i] = temp;

  78.                 change_time++;
  79.             }

  80.             if(i == 3)
  81.             {
  82.                 printf("排序完成,內(nèi)循環(huán)次數(shù):%d,選擇次數(shù): %d,交換次數(shù): %d\n",i+1,time,change_time);
  83.                 break;
  84.             }
  85.             last_time = time;
  86.         }
  87.     }
  88. #endif









  89.     printf("最終結(jié)果:");
  90.     for(i = 0; i < 5; i++)
  91.         printf(" %d",arr[i]);
  92.    
  93.     printf("\n\n按任意鍵退出\n");
  94.     system("pause");
  95.     return 0;
  96. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表