找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1335|回复: 7
打印 上一主题 下一主题
收起左侧

C语言数组由大到小排序

[复制链接]
跳转到指定楼层
楼主
ID:978416 发表于 2023-7-13 08:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
for(k = 0; k < 9; k++)                                                                                                                                                
                {                                                                                                                                                                                                                                                                                
                                                        
                        
                                if( MAXTemp[k] >  MAXTemp[k+1])
                                {               
                                        Valuetemp                        = MAXTemp[k];
                                        MAXTemp[k]                = MAXTemp[k+1];
                                        MAXTemp[k+1]        = Valuetemp;
                                }
                }




问一下各位我想把数组由大到小排序,但是这样好像只能换相邻的位置,需要怎么修改一下啊

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:415064 发表于 2023-7-13 09:46 | 只看该作者
if( MAXTemp[k] <  MAXTemp[k+1])
回复

使用道具 举报

板凳
ID:384109 发表于 2023-7-13 09:49 | 只看该作者
查找一些排序算法吧,排序是不可能只排一次就能排序好的
回复

使用道具 举报

地板
ID:69038 发表于 2023-7-13 10:00 | 只看该作者
冒泡算法了解一下。
回复

使用道具 举报

5#
ID:155507 发表于 2023-7-13 10:31 | 只看该作者
通用的排序算法

  1. /* The Shaker Sort. */
  2. void shaker(char *items, int count)
  3. {
  4.         register int a;
  5.         int exchange;
  6.         char t;
  7.         do {
  8.                 exchange = 0;
  9.                 for(a=count-1; a > 0; --a) {
  10.                         if(items[a-1] > items[a]) {
  11.                                 t = items[a-1];
  12.                                 items[a-1] = items[a];
  13.                                 items[a] = t;
  14.                                 exchange = 1;
  15.                         }
  16.                 }
  17.                 for(a=1; a < count; ++a) {
  18.                         if(items[a-l] > items[a]) {
  19.                                 t = items[a-l];
  20.                                 items[a-1] = items[a];
  21.                                 items[a] = t;
  22.                                 exchange = 1;
  23.                         }
  24.                 }
  25.         } while(exchange); /* sort until no exchanges take place */
  26. }

  27. /* The Selection Sort. */
  28. void select(char *items, int count)
  29. {
  30.         register int a, b, c;
  31.         int exchange;
  32.         char t;
  33.         for(a=0; a < count-1; ++a) {
  34.                 exchange = 0;
  35.                 c = a;
  36.                 t = items[a];
  37.                 for(b=a+1; b < count; ++b) {
  38.                         if(items[b] < t) {
  39.                                 c = b;
  40.                                 t = items[b];
  41.                                 exchange = 1;
  42.                         }
  43.                 }
  44.                 if(exchange) {
  45.                         items[c] = items[a];
  46.                         items[a] = t;
  47.                 }
  48.         }
  49. }

  50. /* The Insertion Sort. */
  51. void insert (char *items, int count)
  52. {
  53.         register int a, b;
  54.         char t;
  55.         for(a=1; a < count; ++a) {
  56.                 t = items[a];
  57.                 for(b=a-1; (b >= 0) && (t < items[b]); b--)
  58.                 items[b+1] = items[b];
  59.                 items[b+1] = t;
  60.         }
  61. }


  62. /* The Shell Sort. */
  63. void shell(char *items, int count)
  64. {
  65.         register int i, j, gap, k;
  66.         char x, a[5];
  67.         a[0]=9; a[1]=5; a[2]=3; a[3]=2; a[4]=1;
  68.         for(k=0; k < 5; k++) {
  69.                 gap = a[k];
  70.                 for(i=gap; i < count; ++i) {
  71.                         x = items[i];
  72.                         for(j=i-gap; (x < items[j]) && (j >= 0); j=j-gap)
  73.                         items[j+gap] = items[j];       
  74.                         items[j+gap] = x;
  75.                 }
  76.         }
  77. }       

  78. /* Quicksort setup function. */
  79. void quick(char *items, int count)
  80. {
  81.         qs(items, 0, count-1);
  82. }
  83. /* The Quicksort. */
  84. void qs(char *items, int left, int right)
  85. {
  86.         register int i, j;
  87.         char x, y;
  88.         i = left; j = right;
  89.         x = items[(left+right)/2];
  90.         do {
  91.                 while((items[i] < x) && (i < right)) i++;
  92.                 while((x < items[j]) && (j > left)) j--;
  93.                 if(i <= j) {
  94.                         y = items[i];
  95.                         items[i] = items[j];
  96.                         items[j] = y;
  97.                         i++; j--;
  98.                 }
  99.         } while(i <= j);
  100.         if(left < j) qs(items, left, j);
  101.         if(i < right) qs(items, i, right);
  102. }
复制代码
回复

使用道具 举报

6#
ID:584814 发表于 2023-7-13 15:08 | 只看该作者
冒泡法:第1个数和所有的比一遍,遇大的则交换在第1的位置;然后第2......
按从小到大排也是一样的方法。程序也就是两层 for 就够了。
回复

使用道具 举报

7#
ID:908826 发表于 2023-7-13 15:58 | 只看该作者
看了一下你的思路,你可以看看冒泡排序
回复

使用道具 举报

8#
ID:189206 发表于 2023-7-13 16:45 | 只看该作者
排序方法有很多,看你选择什么方法,冒泡,快速~~~等等
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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