20240702任伟超8.6作业

算法——>>选择排序

程序1:从大到小

 #include <stdio.h>
  2 
  3 void xuanzepaixu(int n, int arr[])
  4 {
  5     for(int k=0; k<n-1; k++)
  6     {
  7         int max_i=k;    //记录最大值下标
  8         for(int i=max_i+1; i<n; i++)
  9         {
 10             //两数判断最大值
 11             if(arr[i]>arr[max_i])                                                                             
 12             {
 13                 //更新最大值下标
 14                 max_i = i;
 15             }
 16         }
 17         //内循环结束,将最大值与arr[k]做交换
 18         if(k != max_i)
 19         {
 20             int temp = arr[max_i];
 21             arr[max_i] = arr[k];
 22             arr[k] = temp;
 23         }
 24     }
 25     return ;
 26 }
 27 
 28 int main(int argc, const char *argv[])
 29 {
 30     int arr[] = {15,30,21,34,78};
 31     int size = sizeof(arr)/sizeof(arr[0]);
 32     xuanzepaixu(size, arr);
 33 
 34     for(int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
 35     {
 36         printf("%d ", arr[i]);
 37     }
 38     putchar(10);
 39 
 40     return 0;
 41 }

若从小到大排序:

 void xuanzepaixu(int n, int arr[])
 {
     for(int k=0; k<n-1; k++)
     {
         int max_i=k;    //记录最大值下标
         for(int i=max_i+1; i<n; i++)
         {
             //两数判断最小值                    
             if(arr[i]<arr[max_i])
             {
                 //更新最大值下标
                 max_i = i;
             }
         }
         //内循环结束,将最小值与arr[k]做交换
         if(k != max_i)
         {
             int temp = arr[max_i];
             arr[max_i] = arr[k];
             arr[k] = temp;
         }   
     }   
     return ;
 }   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值