对n(<=40)个整数进行升序排序。用C语言实现代码
时间: 2024-05-24 21:13:29 浏览: 108
可以使用冒泡排序、插入排序、选择排序等多种算法来实现升序排序。以下是冒泡排序的C语言实现代码示例:
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
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 i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
相关问题
C语言输入n(1<=n<=100),输入n个整数,对着n个整数采用直接插入排序方法进行升序排序,输出前三趟以及最终的排序序列调用print_array(int *arr, int n)输出前三次插入操作后的序列,以及最终的升序序列
在C语言中,你可以使用插入排序算法对n个整数进行升序排列。插入排序的基本思想是将数组分为已排序和未排序两部分,每次从未排序的部分取出一个元素,在已排序部分找到它应该插入的位置并移动其他元素。以下是实现步骤:
1. 定义一个函数insertion_sort(),接受一个整型数组arr和它的长度n作为参数。
2. 使用for循环遍历数组,从第二个元素开始(索引i=1),依次执行以下操作:
a. 创建一个临时变量temp存储当前元素。
b. 检查前一个元素(arr[i-1])是否大于temp,如果是,则不断交换这两个元素,直到找到合适的位置插入。
c. 更新数组,把已经插入到正确位置的元素移到下一个位置。
3. 对于前三趟(通常第一次就是整个数组),在完成每轮排序后打印数组,使用print_array(arr, i)函数。
4. 循环结束后,整个数组就被排序了,再调用一次print_array(arr, n)显示最终的升序序列。
下面是一个简单的示例代码片段:
```c
#include <stdio.h>
// 插入排序函数
void insertion_sort(int arr[], int n) {
for (int i = 1; i < n; ++i) {
int key = arr[i];
int j = i - 1;
// 将较大的元素逐步向右移位
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
// 打印数组函数
void print_array(int arr[], int n) {
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int n;
printf("Enter the number of elements (1 <= n <= 100): ");
scanf("%d", &n);
// 确保输入有效
if (n < 1 || n > 100) {
printf("Invalid input. Exiting...\n");
return 1;
}
int arr[n];
printf("Enter %d integers: ", n);
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
insertion_sort(arr, n);
// 输出前三趟排序结果
printf("First three passes:\n");
print_array(arr, min(3, n));
// 最终升序序列
printf("Final sorted array:\n");
print_array(arr, n);
return 0;
}
```
用冒泡法对20个整数进行升序排序C语言
好的,这里是针对你的问题的C语言代码实现:
```c
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (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;
}
}
}
}
int main() {
int arr[20] = { 5, 2, 9, 1, 8, 3, 7, 4, 6, 10, 20, 15, 12, 11, 13, 14, 17, 16, 19, 18 };
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序将一个数组中的20个整数进行升序排序。该算法使用冒泡排序的方法,首先比较并交换相邻的两个元素,然后重复这个过程,直到数组中的所有元素都按照升序排列。
阅读全文