Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.
Bubble sort dalam C
Tukar elemen bertetangga dan amati nilai terbesar bergerak ke akhir.

Dalam satu putaran, bandingkan elemen bertetangga dan tukar jika urutannya salah. Setelah satu putaran, elemen terbesar pada bagian yang belum selesai berada di akhir sehingga putaran berikutnya dapat diperpendek.
Penanda pertukaran memungkinkan penghentian jika array sudah terurut. Dengan optimasi itu, kasus terbaik memerlukan O(N), tetapi kasus umum dan terburuk tetap O(N²). Ruang tambahannya O(1).
Jangan mengakses arr[j + 1] jika j sudah menunjuk elemen terakhir. Uji duplikat dan urutan terbalik. Pertukaran hanya ketika nilai kiri benar-benar lebih besar mempertahankan urutan nilai yang sama.
Kode C
#include <stdio.h>
#include <stdbool.h>
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
bool swapped = false;
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
if (!swapped) break; // Array is already sorted
}
}
void print_array(const int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main(void) {
int data[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(data) / sizeof(data[0]);
printf("Original array: ");
print_array(data, n);
bubble_sort(data, n);
printf("Sorted array: ");
print_array(data, n);
return 0;
}Buka di kompilerKeluaran yang diharapkan
Original array: 64 34 25 12 22 11 90 Sorted array: 11 12 22 25 34 64 90
Pertanyaan umum
Mengapa kode dan keluarannya tetap dalam bahasa Inggris?
Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.