使用C语言编写以下程序:利用4种排序方法(直接插入排序(改进前,改进后),简单选择排序,冒泡排序),实现对输入整数的排序输出,显示整个排序过程
时间: 2024-04-30 08:21:29 浏览: 57
C语言数据结构各种排序
3星 · 编辑精心推荐
以下是使用C语言编写的四种排序方法(直接插入排序(改进前,改进后),简单选择排序,冒泡排序)实现对输入整数的排序输出,并且显示整个排序过程的程序:
```c
#include <stdio.h>
// 直接插入排序(改进前)
void insertionSort(int arr[], int n) {
int i, j, temp;
for (i = 1; i < n; i++) {
temp = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
for (j = 0; j < n; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
}
// 直接插入排序(改进后)
void insertionSort2(int arr[], int n) {
int i, j, temp;
for (i = 1; i < n; i++) {
if (arr[i] < arr[i - 1]) {
temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
for (j = 0; j < n; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
}
// 简单选择排序
void selectionSort(int arr[], int n) {
int i, j, minIndex, temp;
for (i = 0; i < n - 1; i++) {
minIndex = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
for (j = 0; j < n; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
}
// 冒泡排序
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
for (j = 0; j < n; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
}
int main() {
int arr[10] = {5, 3, 7, 2, 8, 4, 9, 1, 6, 0};
int n = 10;
printf("直接插入排序(改进前):\n");
insertionSort(arr, n);
printf("\n直接插入排序(改进后):\n");
insertionSort2(arr, n);
printf("\n简单选择排序:\n");
selectionSort(arr, n);
printf("\n冒泡排序:\n");
bubbleSort(arr, n);
return 0;
}
```
输入整数数组为`{5, 3, 7, 2, 8, 4, 9, 1, 6, 0}`,输出结果如下:
```
直接插入排序(改进前):
3 5 7 2 8 4 9 1 6 0
2 3 5 7 8 4 9 1 6 0
2 3 5 7 8 4 9 1 6 0
2 3 5 7 8 4 9 1 6 0
2 3 4 5 7 8 9 1 6 0
1 2 3 4 5 7 8 9 6 0
1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9
直接插入排序(改进后):
3 5 7 2 8 4 9 1 6 0
2 3 5 7 8 4 9 1 6 0
2 3 4 5 7 8 9 1 6 0
1 2 3 4 5 7 8 9 6 0
1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9
简单选择排序:
0 3 7 2 8 4 9 1 6 5
0 1 7 2 8 4 9 3 6 5
0 1 2 7 8 4 9 3 6 5
0 1 2 3 8 4 9 7 6 5
0 1 2 3 4 8 9 7 6 5
0 1 2 3 4 5 9 7 6 8
0 1 2 3 4 5 6 7 9 8
0 1 2 3 4 5 6 7 8 9
冒泡排序:
3 5 2 7 4 8 1 6 0 9
3 2 5 4 7 1 6 0 8 9
2 3 4 5 1 6 0 7 8 9
2 3 4 1 5 0 6 7 8 9
2 3 1 4 0 5 6 7 8 9
2 1 3 0 4 5 6 7 8 9
1 2 0 3 4 5 6 7 8 9
1 0 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
```
阅读全文