C语言输入n(1<=n<=100),输入n个整数,对着n个整数采用直接插入排序方法进行升序排序,输出前三趟以及最终的排序序列
时间: 2024-09-25 10:03:18 浏览: 42
C语言实现选择排序、直接插入排序、冒泡排序的示例
在C语言中,你可以通过以下几个步骤对输入的n个整数进行直接插入排序:
1. 首先,创建一个函数 `insertion_sort` 来实现插入排序算法。这个函数接收一个整数数组 `arr` 和它的长度 `n` 作为参数。
```c
void insertion_sort(int arr[], int n) {
int i, key, j;
for (i = 1; i < n; i++) { // 从第二个元素开始遍历
key = arr[i]; // 将当前元素存储在key中
j = i - 1; // 定义查找位置j
while (j >= 0 && arr[j] > key) { // 如果前一个元素比key大,将它后移一位
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key; // 将key插入到正确的位置
}
}
```
2. 然后,为了输出排序过程,可以添加三个循环分别代表前三趟排序及最后的排序结果。例如:
```c
// 输出前两趟排序结果(每次排序后更新数组)
void print_array(int arr[], int size, char* prefix) {
for (int i = 0; i < size; i++)
printf("%s%d ", prefix, arr[i]);
printf("\n");
}
// 主函数部分
int main() {
int n, temp;
printf("Enter the number of elements (1 <= n <= 100): ");
scanf("%d", &n);
if (n < 1 || n > 100) {
printf("Invalid input!\n");
return 0;
}
int arr[n];
printf("Enter %d integers: ", n);
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
// 插入排序
insertion_sort(arr, n);
// 输出原始数组、第一趟排序后的数组、第二趟排序后的数组、第三趟排序后的数组和最终排序后的数组
printf("Original array: \n");
print_array(arr, n, "");
print_array(arr, n, "After first pass: ");
print_array(arr, n, "After second pass: ");
print_array(arr, n, "After third pass: ");
printf("Final sorted array: \n");
print_array(arr, n, "Sorted: ");
return 0;
}
```
当你运行这个程序时,会提示用户输入整数并进行排序,然后按顺序输出每一趟的结果以及最终排序后的数组。注意,这里只是演示了如何编写排序算法,实际运行时需要处理异常输入情况。
阅读全文