c语言使用两种算法,实现数组从小到大排序
时间: 2024-09-18 09:02:00 浏览: 35
在C语言中,可以使用两种常见的算法来对整数数组进行排序:插入排序和快速排序。
1. **插入排序**(Insertion Sort):
插入排序是一种简单直观的排序算法,它的工作原理类似于构建有序序列。对于未排序数据,在已排序部分中从后向前扫描,找到相应位置并插入。代码示例:
```c
void insertion_sort(int arr[], int n) {
int i, key, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
```
2. **快速排序**(Quick Sort):
快速排序是一种分而治之的排序算法,通过选取一个“基准”元素,将数组分为两部分,一部分所有元素都小于基准,另一部分所有元素都大于基准,然后递归地对这两部分进行排序。代码示例(使用Lomuto分区):
```c
#define swap(arr, i, j) { \
int temp = arr[i]; \
arr[i] = arr[j]; \
arr[j] = temp; \
}
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 partition(int arr[], int low, int high) {
int pivot = arr[high], i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, high);
return (i + 1);
}
```
阅读全文