刚写了一段程序,功能是对一个数组里的值进行升序排序,但只是多了个大括号(在关于j的for循环那里)的区别,得到的结果完全不同,自己也没推出来问题在哪,感觉应该不会有那么大的区别啊。
问题相关代码
加大括号:
//ssort.c
#include <stdio.h>
static void swap(int* a,int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
extern void selection_sort(int array[], int len)
{
int i, j, min;
for (i = 0; i < len - 1; i++)
{
min = i;
for (j = i + 1; j < len; j++)
{
if (array[min] > array[j])
{
min = j;
}
if (min != i)
{
swap(&array[i], &array[min]);
}
}
}
}
extern void print_array(int array[], int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d\t", array[i]);
}
}
//main.c
#include <stdio.h>
#define LEN 10
void selection_sort(int array[], int len);
void print_array(int array[], int len);
int main()
{
int array[] = { 8,1,3,5,6,7,4,9,2,10 };
selection_sort(array, LEN);
print_array(array, LEN);
return 0;
}
不加大括号:
//ssort.c
#include <stdio.h>
static void swap(int* a,int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
extern void selection_sort(int array[], int len)
{
int i, j, min;
for (i = 0; i < len - 1; i++)
{
min = i;
for (j = i + 1; j < len; j++)
if (array[min] > array[j])
{
min = j;
}
if (min != i)
{
swap(&array[i], &array[min]);
}
}
}
extern void print_array(int array[], int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d\t", array[i]);
}
}
//main.c
#include <stdio.h>
#define LEN 10
void selection_sort(int array[], int len);
void print_array(int array[], int len);
int main()
{
int array[] = { 8,1,3,5,6,7,4,9,2,10 };
selection_sort(array, LEN);
print_array(array, LEN);
return 0;
}
运行结果
加大括号:
不加大括号:
我尝试了一下逐步运行查看语句,但是看不到这个数组内数据的实时位置,脑子不够用,没推出来。