基于for循环的几个常用排序方法



  /*
 选择排序。
 */

#include <stdio.h>

int main()
{

  int arr[]={34,12,55,53,23,3,43}; // 当然自己也可以手动输入

  int len = sizeof(arr)/sizeof(int);  //求数组长度
  int x,y,z;

  for(x=0; x<len-1; x++)
  {
   for(y=x+1; y<len; y++)
   {
    if(arr[x]>arr[y])
    {
     int temp  = arr[x];   //交换两个元素顺序
     arr[x] = arr[y];
     arr[y] = temp;
     }
    }
  }
  for(z=0;z<len;z++)
  {
                    printf("arr[%d] = %d\n",z,arr[z]);
                    }
  while(1);

  return 0;
}


/*
 冒泡排序: 通过两两直接比较,把最大的那个数值放在最高位,依次进行
 */
#include <stdio.h>

int main()
{
    int arr[]={34,12,55,53,23,3,43}; // 当然自己也可以手动输入
   
    int len = sizeof(arr)/sizeof(int);  //求数组长度
    int x,y,z,temp = 0;

 for(x=0;x<len-1; x++)              //for外循环  控制数组角标元素   
 {
  for(y=0;y<len-1-x; y++)       /*
                                        for内循环  控制每次循环 两两元素比较的次数
                                        len-1-x表达式解析:
                                        -1:为了避免角标越界
                                        -x:为了让外循环增加一次,内循环参与比较的元素个数递减
                                      */
  {
   if(arr[y]>arr[y+1]) 
   {
   
    temp  = arr[y];     //比较之后前后交换元素
    arr[y] = arr[y+1];
    arr[y+1] = temp;
   
   }
  } 
 }
 
    for(z=0;z<len;z++)                 //遍历输出排序后的数组
    {
                      printf("arr[%d] = %d\n",z,arr[z]);
                      }
    while(1);
    return 0;
}


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值