int型数组长度小于9,存的数字也小于等于9,只能用另外一个变量i,求出顺序表中的最小值
TIPS:以前的做法是,i作为数组的循环变量扫一遍数组,再定义一个Min作为最小值变量存储。
Good idea:用i的个位存储min最小值,十位当做循环变量(此方法只适用于特定题型,因为数组长度和存储的数都是小于9的1位数长度)
- #include<stdio.h>
- #define maxsize 50
- /*用i的个位存储最小值,i十位上的数当做循环变量找第N个数*/
- void findmin(int L[],int &i)
- {
- i=L[i/10];
- while(i/10<=9)
- {
- if(i%10>L[i/10])//更换个位
- {
- i=i-i%10;
- i=i+L[i/10];
- }
- i=i+10;//十位增加1 循环变量+1
- }
- i=i%10;
- }
- int main (void)
- {
- int L[9]={4,2,3,1,5,6,7,8,9};
- int i;
- findmin(L,i);
- printf("%d\n",i);
- return 0;
- }