|
本帖最后由 Smallbee 于 2013-3-30 21:01 编辑
我弄了第一个数组排序。很久没用C了,折腾了好长时间。- #include <stdio.h>
- int swap(int *a, int *b);
- int sort(int num, int iArray[]);
- int main(int argc, char *argv[])
- {
- int num=0, i, iArray[10]={0};
-
- fflush(stdin);//清空输入缓冲区
- printf("请输入数组元素个数:\n");
- scanf("%d", &num);
- printf("请输入数组元素:\n");
- for (i=0; i<num; i++)
- scanf("%d", &iArray[i]);
-
- sort(num, iArray);
-
- printf("\n排序完成:\n");
- for (i=0; i<num; i++)
- {
- printf("%d\t", iArray[i]);
- }
- printf("\n");
- return 0;
- }
- int swap(int *a, int *b)
- {
- *a += *b;
- *b = *a - *b;
- *a -= *b;
- /*
- int t;
- t = *a;
- *a = *b;
- *b = t;
- */
- //以上两种方法均可完成交换操作,前一种是从ahac教程中获知。
- //但前一种一旦*a,*b指向同一地址,则最后其值变为0。所以Sort中要增加是否指向同一地址的判断。
- return 0;
- }
- int sort(int num,int iArray[])
- {
- int i, j, k, min;
- for (i=0; i<num-1; i++)
- {
- min = iArray[i];
- k = i;
-
- for (j = i + 1; j < num; j++)
- {
- if (min > iArray[j])
- {
- min = iArray[j];
- k = j;
- }
- }
- if (k != i)
- {
- swap(&iArray[i], &iArray[k]);
- //swap(iArray+i, iArray+k);
- //以上两句均可,因为数组名就是数组首元素地址,加上i就是第i+1个元素的地址。
- }
- /*
- printf("第%d次循环结束时的数组:\n",i+1);
- for (j=0; j<num; j++)
- {
- printf("%d\t",iArray[j]);
- }
- printf("\n");
- */
- }
- return 0;
- }
复制代码 |
|