编写一个完整C语言程序,采用两种排序方法实现对某一组无序序列的非递减排序操作。在主程序中输入初始序列,调用排序算法进行排序,输出排序结果。
时间: 2024-03-26 12:42:00 浏览: 58
当然,这是一个经典的排序算法的实现,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序等等。这里我将演示冒泡排序和插入排序的实现方法。以下是示例代码:
```c
#include <stdio.h>
/* 冒泡排序 */
void bubble_sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
/* 插入排序 */
void insertion_sort(int arr[], int len) {
int i, j, temp;
for (i = 1; i < len; i++) {
temp = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
int main() {
int arr[] = {7, 1, 3, 5, 9, 2, 4, 6, 8, 0};
int len = sizeof(arr) / sizeof(arr[0]);
int i;
printf("Original array: ");
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubble_sort(arr, len);
printf("After bubble sort: ");
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
insertion_sort(arr, len);
printf("After insertion sort: ");
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序首先定义了两个排序函数,`bubble_sort()` 和 `insertion_sort()`,然后在 `main()` 函数中声明一个整型数组 `arr`,并使用 `sizeof` 运算符计算数组长度。然后,程序打印出原始数组,调用 `bubble_sort()` 函数和 `insertion_sort()` 函数进行排序,最后输出排序后的数组。
当程序运行时,它将打印以下输出:
```
Original array: 7 1 3 5 9 2 4 6 8 0
After bubble sort: 0 1 2 3 4 5 6 7 8 9
After insertion sort: 0 1 2 3 4 5 6 7 8 9
```
可以看到,排序函数按照非递减排序的要求正确地排序了输入序列。
阅读全文