Bubble Sort (sắp xếp nổi bọt) là thuật toán sắp xếp đơn giản nhất, còn gọi là sắp xếp trao đổi (exchange sort).
Thủ tục
- So sánh phần tử đầu với các phần tử còn lại, hoán đổi nếu không theo thứ tự.
- Lặp lại cho các phần tử khác cho đến khi mảng được sắp xếp.
Thuật toán
bub_sort(list, num):
for i = 0 to num-1
for j = 0 to num-i-1
if list[j] > list[j+1]
swap(list[j], list[j+1])
Chương trình C hoàn chỉnh
#include <stdio.h>
#define MAX 10
void swapList(int *m, int *n) {
int temp = *m;
*m = *n;
*n = temp;
}
void bub_sort(int list[], int n) {
int i, j;
for (i = 0; i < (n-1); i++)
for (j = 0; j < (n-(i+1)); j++)
if (list[j] > list[j+1])
swapList(&list[j], &list[j+1]);
}
void readlist(int list[], int n) {
int j;
printf("\nNhập các phần tử:\n");
for (j = 0; j < n; j++)
scanf("%d", &list[j]);
}
void printlist(int list[], int n) {
int j;
for (j = 0; j < n; j++)
printf("%d\t", list[j]);
}
void main() {
int list[MAX], num;
printf("Nhập số lượng phần tử:\n");
scanf("%d", &num);
readlist(list, num);
printf("\nMảng trước khi sắp xếp:\n");
printlist(list, num);
bub_sort(list, num);
printf("\n\nMảng sau khi sắp xếp:\n");
printlist(list, num);
}
Kết quả
Nhập số lượng phần tử: 10 Nhập các phần tử: 11 23 45 1 3 6 35 69 10 22 Mảng trước khi sắp xếp: 11 23 45 1 3 6 35 69 10 22 Mảng sau khi sắp xếp: 1 3 6 10 11 22 23 35 45 69