在C語(yǔ)言中,對(duì)數(shù)組進(jìn)行排序是一個(gè)常見的編程需求。無論是從小到大還是從大到小排列,都可以通過多種算法來實(shí)現(xiàn)。這里我們將介紹幾種常用的排序方法,并給出相應(yīng)的代碼示例。
冒泡排序法
冒泡排序是一種簡(jiǎn)單的排序算法,它重復(fù)地遍歷要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。遍歷數(shù)列的工作是重復(fù)進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。
```c
include
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
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;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr, n);
printf("Sorted array: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
```
插入排序法
插入排序是一種簡(jiǎn)單直觀的排序算法。它的基本操作就是將一個(gè)數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個(gè)新的、個(gè)數(shù)加一的有序數(shù)據(jù)。
```c
include
void insertion_sort(int arr[], int n) {
int key, j;
for (int i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
// 將大于key的元素向后移動(dòng)一位
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
int main() {
int arr[] = {12, 11, 13, 5, 6};
int n = sizeof(arr)/sizeof(arr[0]);
insertion_sort(arr, n);
printf("Sorted array is:\n");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
```
快速排序法
快速排序使用分治法策略來把一個(gè)序列分為較小和較大的兩個(gè)子序列,然后遞歸地排序兩個(gè)子序列。
```c
include
void swap(int a, int b) {
int t = a;
a = b;
b = t;
}
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high- 1; j++) {
if (arr[j] <= pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quick_sort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quick_sort(arr, low, pi - 1);
quick_sort(arr, pi + 1, high);
}
}
int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr)/sizeof(arr[0]);
quick_sort(arr, 0, n - 1);
printf("Sorted array: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
```
以上三種排序方法各有優(yōu)劣,在實(shí)際應(yīng)用中可以根據(jù)具體的需求選擇合適的算法。希望這些基礎(chǔ)的排序方法能幫助你更好地理解和掌握C語(yǔ)言中的數(shù)組操作。