排序

找出最大的位置

#include <stdio.h>

int max(int a[],int len)
{
    int maxid=0;
    for(int i=1;i<len;i++){
        if(a[i]>a[maxid])
        {
            maxid=i;
        }
    }
    return maxid;
}



int main()
{
   int a[]={3,2,6,99,100,8,0,7};
   int maxid=max(a,sizeof(a)/sizeof(a[0]));
   printf("%d\n",maxid);
    
    return 0;
}

交换

#include <stdio.h>

int max(int a[],int len)
{
    int maxid=0;
    for(int i=1;i<len;i++){
        if(a[i]>a[maxid])
        {
            maxid=i;
        }
    }
    return maxid;
}



int main()
{
   int a[]={3,2,6,99,100,8,0,7};
   //int maxid=max(a,sizeof(a)/sizeof(a[0]));
   int len=sizeof(a)/sizeof(a[0]);
  
   for(int i=len-1;i>0;i--)//i=0的时侯没有必要比较
   {
        int maxid=max(a,i+1);
        int t=a[maxid];
        a[maxid]=a[i];
        a[i]=t;
   }
   //a[maxid]=a[sizeof(a)/sizeof(a[0])-1];
   //a[sizeof(a)/sizeof(a[0])-1]=t;
   for(int i=0;i<len;i++)
   {
       printf("%d ",a[i]);
   }
    
    return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在看数据结构,研究了一下常用的几种排序方法:1.冒泡排序,2.选择排序,3.插入排序,4.希尔排序,5.快速排...
    wo883721阅读 5,333评论 0 4
  • 1 初级排序算法 排序算法关注的主要是重新排列数组元素,其中每个元素都有一个主键。排序算法是将所有元素主键按某种方...
    深度沉迷学习阅读 5,319评论 0 1
  • 冒泡排序 冒泡排序相对来说是较为简单的一种排序,它的思想就是在每一次循环中比较相邻的两个数,通过交换的方式,将最小...
    陌上疏影凉阅读 3,655评论 0 3
  • 注: lgN在这里为1og2N简写 为了方便描述,本文默认用int类型比较,从小到大排序 本文排序算法以java语...
    a程序之路阅读 3,153评论 0 0
  • 选择排序的基本思想是每次从待排序的数据元素集合中选取最小或最大的数据元素放到数据元素集合的最前面或最后面,数据元素...
    风紧扯呼阅读 3,555评论 0 2