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