在这个代码的基础上,加一个要求使其输入的十个整数从小到大排序,怎么改进?各位看官姥爷们🙏
在int main前面加上
void sort(int arr[], int n)
{
int i, j, t;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
t = arr[j]; arr[j] = arr[j+1]; arr[j+1]=t;
}
}
}
在main里面return 0;前加上
sort(a, 10);
printf("\n排序后\n");
for (i =0; i < 10; i++)
printf("%d ", arr[i]);
再for循环外再加一个循环,做冒泡排序;其他地方方法还有二分排序,快速排序等,望采纳
void bubble_sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
这个函数放在main之前
printf("排序后: \n");
int len = sizeof(a) / sizeof(arr[0]);
bubble_sort(arr, len);
int i;
for (i = 0; i < len; i++)
printf("%d ", a[i]);
printf("最大值为:..."); 放在这行之前
c++有排序库吧?
【以下回答由 GPT 生成】
在改进上述代码时,可以使用冒泡排序算法对输入的十个整数进行从小到大的排序。以下是改进后的代码:
#include<stdio.h>
void bubbleSort(int a[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (a[j] > a[j+1]) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main() {
int a[10], i;
printf("请输入十个数字:");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
printf("\n");
bubbleSort(a, 10);
printf("排序后的数字为:");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
这段代码中,我们增加了一个名为bubbleSort
的函数,用于对传入的数组进行冒泡排序。在主函数中,我们首先接收用户输入的十个整数,然后调用bubbleSort
函数对数组进行排序,最后输出排序后的数组。
冒泡排序是一种简单直观的排序算法,它通过重复地交换相邻的元素直至达到排序的目的。在每轮迭代中,比较相邻的两个元素,如果顺序不正确则进行交换。经过一轮迭代后,最大的元素就会“冒泡”到最后一位。重复进行这个过程,直到所有的元素都排好序为止。
【相关推荐】