用c语言编写程序,实现冒泡排序、简单选择排序,希尔排序
时间: 2024-07-09 19:00:31 浏览: 97
在C语言中,我们可以使用循环和条件判断来实现常见的排序算法,如冒泡排序、简单选择排序以及希尔排序。这里我会简要描述每种排序方法的实现思路:
1. **冒泡排序**:
冒泡排序是最基础的排序算法之一,通过反复交换相邻的未按顺序排列的元素,直到整个序列有序。以下是C代码示例:
```c
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;
}
}
}
}
```
2. **简单选择排序**:
简单选择排序每次从未排序的部分选择最小(或最大)的元素,放到已排序部分的末尾。C代码如下:
```c
void selection_sort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
int min_index = i;
for (int j = i+1; j < n; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
```
3. **希尔排序**:
希尔排序是插入排序的改进版,通过将数组分为若干子序列分别进行插入排序,然后逐渐缩小子序列的范围,直到整个序列有序。C代码示例通常使用插入元素间的差距序列:
```c
void shell_sort(int arr[], int n) {
int gap = n/2;
while (gap > 0) {
for (int i = gap; i < n; i++) {
int temp = arr[i];
int j;
for (j = i; j >= gap && arr[j-gap] > temp; j -= gap) {
arr[j] = arr[j-gap];
}
arr[j] = temp;
}
gap /= 2;
}
}
```
阅读全文