选择排序

选择排序

1.  依次选择第(1,2,......,n-1)为最小值,依次比较后面的值,知道遇到最小值两者调换

 

#include<stdio.h>
void choose(int *a,int n)
{
 int i,j,min,index;   //取最小值min,最小值的下标index
 for(i=0;i<n-1;i++)   //有n个数則进行n-1次排序
 {
  min = a[i];      //依次选择a[0,1,.....,n-1]为最小值
  index = i;      //最小值下标
  for(j=i+1;j<n;j++)    //选择a[0]为最小值,只需要比较a[0]后面的值,所以 j 从i+1开始比较
  {
   if(min > a[j])
   {
    min = a[j];      //碰到比min小的数,将其赋值给min,同时保存下标,知道找到最小值
    index = j;
   }
  }
  if(i!=index)      //判断最小值是不是在原来的位置,如果在原来的位置,就不用调换数值了
  {
   a[index] = a[i];
   a[i] = min;
  }
 }
}
int main(int argc, const char *argv[])
{
 int a[] = {67,55,37,86,65,36,88,54,6,24};
 choose(a,10);
 int i;
 for(i=0;i<10;i++)
  printf("%5d",a[i]);
 printf("\n");
 return 0;
}

---恢复内容结束---

 

#include<stdio.h>
void choose(int *a,int n)
{
 int i,j,min,index;
 for(i=0;i<n-1;i++) //有n个数則进行n-1次排序
 {
  min = a[i];
  index = i;
  for(j=i+1;j<n;j++)
  {
   if(min > a[j])
   {
    min = a[j];
    index = j;
   }
  }
  if(i!=index)
  {
   a[index] = a[i];
   a[i] = min;
  }
 }
}
int main(int argc, const char *argv[])
{
 int a[] = {67,55,37,86,65,36,88,54,6,24};
 choose(a,10);
 int i;
 for(i=0;i<10;i++)
  printf("%5d",a[i]);
 printf("\n");
 return 0;
}

posted @ 2019-05-08 16:45  莫负年华向东流  阅读(100)  评论(0编辑  收藏  举报