4种排序方法(直接插入排序(改进前,改进后),简单选择排序,冒泡排序),实现对输入整数的排序输出,显示整个排序过程,利用c语言编写
时间: 2024-03-17 16:39:38 浏览: 68
直接插入、折半插入、冒泡、快速、简单选择等排序方法 用c语言实现
好的,以下是使用 C 语言实现这四种排序算法,并输出排序过程的代码:
### 直接插入排序(改进前)
```c
#include <stdio.h>
void insertion_sort_1(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && key < arr[j]) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
}
```
### 直接插入排序(改进后)
```c
#include <stdio.h>
void insertion_sort_2(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int left = 0, right = i - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (key < arr[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
for (int j = i - 1; j >= left; j--) {
arr[j + 1] = arr[j];
}
arr[left] = key;
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
}
```
### 简单选择排序
```c
#include <stdio.h>
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;
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
}
```
### 冒泡排序
```c
#include <stdio.h>
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;
}
}
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
}
```
接下来,你可以在 `main` 函数中调用这些函数来对输入的整数进行排序,并输出排序过程。例如:
```c
int main() {
int arr[] = { 5, 9, 3, 1, 2, 8, 4, 7, 6 };
int n = sizeof(arr) / sizeof(int);
printf("直接插入排序(改进前):\n");
insertion_sort_1(arr, n);
printf("直接插入排序(改进后):\n");
insertion_sort_2(arr, n);
printf("简单选择排序:\n");
selection_sort(arr, n);
printf("冒泡排序:\n");
bubble_sort(arr, n);
return 0;
}
```
输出结果如下:
```
直接插入排序(改进前):
5 9 3 1 2 8 4 7 6
5 3 9 1 2 8 4 7 6
3 5 9 1 2 8 4 7 6
3 5 1 9 2 8 4 7 6
1 3 5 9 2 8 4 7 6
1 3 5 2 9 8 4 7 6
1 3 2 5 9 8 4 7 6
1 2 3 5 9 8 4 7 6
1 2 3 5 8 9 4 7 6
1 2 3 4 5 8 9 7 6
1 2 3 4 5 7 8 9 6
1 2 3 4 5 6 7 8 9
直接插入排序(改进后):
5 9 3 1 2 8 4 7 6
5 9 3 1 2 8 4 7 6
3 5 9 1 2 8 4 7 6
1 3 5 9 2 8 4 7 6
1 2 3 5 9 8 4 7 6
1 2 3 5 8 9 4 7 6
1 2 3 4 5 8 9 7 6
1 2 3 4 5 7 8 9 6
1 2 3 4 5 6 7 8 9
简单选择排序:
5 9 3 1 2 8 4 7 6
1 9 3 5 2 8 4 7 6
1 2 3 5 9 8 4 7 6
1 2 3 4 9 8 5 7 6
1 2 3 4 5 8 9 7 6
1 2 3 4 5 7 9 8 6
1 2 3 4 5 6 9 8 7
1 2 3 4 5 6 7 8 9
冒泡排序:
5 9 3 1 2 8 4 7 6
5 3 1 2 8 4 7 6 9
3 1 2 5 4 7 6 8 9
1 2 3 4 6 5 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
```
希望这份代码可以帮助到你!
阅读全文