今天的课后任务是2种排序方式(冒泡排序和选择排序)
冒泡排序法1
原理:从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换他们,一直比较到a[n]。同理对a[1], a[2], ……a[n-1]处理,即完成排序。
void bubble(int *a, int n) /*冒泡排序函数*/
{
int i, j, temp;
for (i = 0; i < n-1; i++)
{
for (j = i+1; j < n; j++) /*注意循环的上下限*/
{
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
冒泡排序法2(沉底法)
相邻的两个数进行比较
void bubble(int *a, int n)
/*冒泡函数部分*/
{
int i, j, temp;
for (i = 0; i < n-1; i++)
{
for (j = 0; j < n-i-1; j++)
{
if (a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
附上输出函数和主函数
void print(int *a, int n) /*输出函数*/
{
int i;
for (i = 0; i < n; i++)
printf("%5d", a[i]);
printf ("\n");
}
int main() /*主函数*/
{
int a[] = {13, 0, 5, 1, 7, 21, 50, 9, 2};
printf ("according to bubble:");
bubble(a, 10);
print(a, 10);
return 0;
}