码迷,mamicode.com
首页 > 编程语言 > 详细

每天一个小程序——选择排序时的一个小问题!

时间:2015-08-03 14:58:20      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:c语言程序

一开始我的程序如下,一直出现错误,基本上肯定逻辑上没有错误,用C-free编译运行时排序根本就没用,后来改成后面的才有用!

(一),有问题的程序

#include<stdio.h>
//#define LEN 10
void Sort(int arry[]);
int Select_min(int arry[]);
int main()
{
 int a[10],num=0;

 for(num=0;num<10;num++) /*输入10个数字*/
 {
  scanf("%d",&a[num]);
 }
 //printf("%d\n",sizeof(a)/sizeof(int));
 //printf("%d\n",Select_min(a));
    Sort(a,sizeof(a)/4);
    for(num=0;num<10;num++)
    {
     printf("%d ",a[num]);
    }
    printf("\n");
   return 0; 
}

void Sort(int  arry[])
{
 int i=0,j=0,min=0;
 int temp;
 //arry_size=sizeof(arry)/4;
 //for(i=j+1;sizeof(arry)/4;i++)
 for(j=0;j<sizeof(arry)/4;j++)
 { 
  min=j;
  for(i=j+1;i<sizeof(arry)/4;i++)/*这个for循环就是找到每一趟中最小的值,找到之后下一躺就少一个*/
  {
   if(arry[min]>arry[i])  
       min=i;/*记录最小值*/ 
  }

  if(min!=j)  /*把第一次最小的放在数组的最前面*/
  {
   temp=arry[min];
      arry[min]=arry[j];
      arry[j]=temp;
  
  }
  
 }
}

int Select_min(int arry[])/*求数组中最小值*/
{
 int m,MIN=0;
 MIN=arry[0];
 for(m=1;m<sizeof(arry)/sizeof(int);m++)
 {
  if(MIN>arry[m])
       MIN=arry[m];
 }
 return MIN;
}

(二)、修改后正确代码!

#include<stdio.h>
//#define LEN 10
void Sort(int arry[],int);
int Select_min(int arry[]);
int main()
{
 int a[10],num=0;

 for(num=0;num<10;num++) /*输入10个数字*/
 {
  scanf("%d",&a[num]);
 }
 //printf("%d\n",sizeof(a)/sizeof(int));
 //printf("%d\n",Select_min(a));
    Sort(a,sizeof(a)/4);
    for(num=0;num<10;num++)
    {
     printf("%d ",a[num]);
    }
    printf("\n");
   return 0; 
}

void Sort(int  arry[],int arry_size)
{
 int i=0,j=0,min=0;
 int temp;
 //arry_size=sizeof(arry)/4;
 //for(i=j+1;sizeof(arry)/4;i++)
 for(j=0;j<arry_size;j++)
 { 
  min=j;
  for(i=j+1;i<arry_size;i++)/*这个for循环就是找到每一趟中最小的值,找到之后下一躺就少一个*/
  {
   if(arry[min]>arry[i])  
       min=i;/*记录最小值*/ 
  }

  if(min!=j)  /*把第一次最小的放在数组的最前面*/
  {
   temp=arry[min];
      arry[min]=arry[j];
      arry[j]=temp;
  
  }
  
 }
}

int Select_min(int arry[])/*求数组中最小值*/
{
 int m,MIN=0;
 MIN=arry[0];
 for(m=1;m<sizeof(arry)/sizeof(int);m++)
 {
  if(MIN>arry[m])
       MIN=arry[m];
 }
 return MIN;
}

本文出自 “7378168” 博客,请务必保留此出处http://7388168.blog.51cto.com/7378168/1681200

每天一个小程序——选择排序时的一个小问题!

标签:c语言程序

原文地址:http://7388168.blog.51cto.com/7378168/1681200

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!