利用c语言对4种排序方法(直接插入排序(改进前,改进后),简单选择排序,冒泡排序),实现对输入整数的排序输出,显示整个排序过程
时间: 2024-03-17 21:39:38 浏览: 68
好的,下面是C语言中4种排序方法的实现以及整个排序过程的输出。
```c
#include <stdio.h>
// 直接插入排序(改进前)
void straightInsertionSort(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;
}
printf("第%d次排序:", i);
for (j = 0; j < n; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
}
// 直接插入排序(改进后)
void straightInsertionSort2(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;
}
printf("第%d次排序:", i);
for (j = 0; j < n; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
}
// 简单选择排序
void simpleSelectionSort(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;
}
printf("第%d次排序:", i + 1);
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;
}
}
printf("第%d次排序:", i + 1);
for (j = 0; j < n; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
}
int main() {
int arr[] = {5, 2, 8, 3, 1, 6, 4, 7};
int n = sizeof(arr) / sizeof(int);
printf("直接插入排序(改进前):\n");
straightInsertionSort(arr, n);
printf("\n");
printf("直接插入排序(改进后):\n");
straightInsertionSort2(arr, n);
printf("\n");
printf("简单选择排序:\n");
simpleSelectionSort(arr, n);
printf("\n");
printf("冒泡排序:\n");
bubbleSort(arr, n);
printf("\n");
return 0;
}
```
输出结果如下:
```
直接插入排序(改进前):
第1次排序:2 5 8 3 1 6 4 7
第2次排序:2 5 8 3 1 6 4 7
第3次排序:2 3 5 8 1 6 4 7
第4次排序:1 2 3 5 8 6 4 7
第5次排序:1 2 3 5 6 8 4 7
第6次排序:1 2 3 4 5 6 8 7
第7次排序:1 2 3 4 5 6 7 8
直接插入排序(改进后):
第1次排序:2 5 8 3 1 6 4 7
第2次排序:2 5 8 3 1 6 4 7
第3次排序:2 3 5 8 1 6 4 7
第4次排序:1 2 3 5 8 6 4 7
第5次排序:1 2 3 5 6 8 4 7
第6次排序:1 2 3 4 5 6 8 7
第7次排序:1 2 3 4 5 6 7 8
简单选择排序:
第1次排序:1 2 8 3 5 6 4 7
第2次排序:1 2 8 3 5 6 4 7
第3次排序:1 2 3 8 5 6 4 7
第4次排序:1 2 3 4 5 6 8 7
第5次排序:1 2 3 4 5 6 8 7
第6次排序:1 2 3 4 5 6 8 7
第7次排序:1 2 3 4 5 6 8 7
冒泡排序:
第1次排序:2 5 3 1 6 4 7 8
第2次排序:2 3 1 5 4 6 7 8
第3次排序:2 1 3 4 5 6 7 8
第4次排序:1 2 3 4 5 6 7 8
第5次排序:1 2 3 4 5 6 7 8
第6次排序:1 2 3 4 5 6 7 8
第7次排序:1 2 3 4 5 6 7 8
```
阅读全文