顧得泉:個人主頁
個人專欄:《Linux操作系統(tǒng)》??《C/C++》??《LeedCode刷題》
鍵盤敲爛,年薪百萬!
void bubble_sort(int arr[], int n)
{
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
???????上述代碼定義了一個名為 bubble_sort
的函數(shù),它接受一個整數(shù)數(shù)組 arr
和數(shù)組的長度 n
作為參數(shù)。函數(shù)使用嵌套的兩個for循環(huán)來實現(xiàn)冒泡排序算法。
???????外層循環(huán)從 0
到 n-2
,表示需要進行 n-1
輪比較和交換操作。內(nèi)層循環(huán)從 0
到 n-2-i
,其中 i
是外層循環(huán)的索引。這是因為每一輪比較后,最大的元素都會被移動到正確的位置,所以內(nèi)層循環(huán)不需要再比較已經(jīng)排好序的元素。
???????在內(nèi)層循環(huán)中,通過比較相鄰的元素 arr[j]
和 arr[j+1]
,如果前者大于后者,則交換它們的位置。這樣,每一輪內(nèi)層循環(huán)結(jié)束后,最大的元素就會被移動到正確的位置。整個排序過程會重復進行,直到所有的元素都被正確地排序。最后,函數(shù)不返回任何值,因為它直接修改了輸入的數(shù)組 arr
。
int main()
{
int arr[] = {6, 3, 2, 1, 4, 5, 9};
int n = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, n);
printf("排序后的數(shù)組是:\n");
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
? ? ? ?在此段代碼中我們定義了一個arr數(shù)組,并且初始化了元素。定義了一個整數(shù)n為數(shù)組的長度,通過sizeof()函數(shù)先計算整個數(shù)組的字節(jié)大小除以單個元素的字節(jié)大小得到。接下來就是調(diào)用bubble_sort
?函數(shù),后續(xù)通過for循環(huán)依次遍歷排序后的數(shù)組依次打印。
整體展示:
? ? ? ?上述代碼我們是提前定義好的數(shù)組元素,要是想要手動輸入數(shù)組元素,循環(huán)套用scanf()函數(shù)即可,bubble_sort
?函數(shù)不變,詳細代碼如下:
int main()
{
int n;
printf("請輸入數(shù)組元素個數(shù): ");
scanf("%d", &n);
int arr[n];
printf("請輸入數(shù)組元素: ");
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
bubble_sort(arr, n);
printf("排序后的數(shù)組為: ");
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
整體展示:
? ? ? ?
???????由于我使用的編譯環(huán)境不支持編譯未知數(shù)組大小,所以我使用的是Dev C++環(huán)境給大家展示結(jié)果,大家在學習中可以自行研究練習。文章來源:http://www.zghlxwxcb.cn/news/detail-744263.html
結(jié)語:冒泡排序的分享到這里就結(jié)束了,希望對大家的學習會有幫助,如果大家有什么問題或者不同的見解,歡迎大家的留言~~~文章來源地址http://www.zghlxwxcb.cn/news/detail-744263.html
到了這里,關于常見排序算法之冒泡排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!