今天的课后任务是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;
}