鱼C论坛

 找回密码
 立即注册
查看: 1338|回复: 2

两种代码都不对

[复制链接]
发表于 2023-11-19 19:50:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 mamaaini 于 2023-11-19 19:52 编辑

请你按照从小到大的顺序输出。
#include <stdio.h>
int main()
{
    int N,i,j,temp;
    scanf("%d",&N);
    int a[N];
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<N;i++)
    {
        for(j=i+1;j<N;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    for(i=0;i<N-1;i++)
    {
        printf("%d ",a[i]);
    }
    printf("%d",a[N-1]);
    return 0;
}
#include <stdio.h>
int main()
{
    int N,i,j,temp;
    scanf("%d",&N);
    int a[N];
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<N-1;i++)
    {
        for(j=0;j<N-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
    for(i=0;i<N;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-19 19:50:46 | 显示全部楼层
第一种代码使用了选择排序的方法,第二种代码使用了冒泡排序的方法。两种排序算法的时间复杂度都是O(n^2),但是它们的具体实现方式有所不同。

选择排序通过每一轮遍历找到最小的元素,然后将其放到相应位置,而冒泡排序则是通过相邻元素之间的比较和交换来逐步将最大的元素推向数组末尾。

选择排序的外层循环是遍历整个数组,内层循环是找到最小元素的过程;而冒泡排序的外层循环也是遍历整个数组,内层循环则是相邻元素之间的比较和交换过程。

因此,两种排序算法的核心思想是不同的,但都可以实现从小到大的排序。在实际应用中,选择排序通常比冒泡排序更快,因为选择排序的交换次数相对较少。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-19 19:53:25 | 显示全部楼层
C语言代码:
  1. #include <stdio.h>
  2. int main() {
  3.     int N, i, j, temp;
  4.     scanf("%d", &N);
  5.     int a[N];
  6.     for(i = 0; i < N; i++) {
  7.         scanf("%d", &a[i]);
  8.     }
  9.     for(i = 0; i < N; i++) {
  10.         for(j = i + 1; j < N; j++) {
  11.             if(a[i] > a[j]) {
  12.                 temp = a[i];
  13.                 a[i] = a[j];
  14.                 a[j] = temp;
  15.             }
  16.         }
  17.     }
  18.     for(i = 0; i < N - 1; i++) {
  19.         printf("%d ", a[i]);
  20.     }
  21.     printf("%d\n", a[N - 1]);
  22.     return 0;
  23. }
复制代码

C++代码:
  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.     int N, i, j, temp;
  5.     cin >> N;
  6.     int a[N];
  7.     for(i = 0; i < N; i++) {
  8.         cin >> a[i];
  9.     }
  10.     for(i = 0; i < N - 1; i++) {
  11.         for(j = 0; j < N - i - 1; j++) {
  12.             if(a[j] > a[j + 1]) {
  13.                 temp = a[j];
  14.                 a[j] = a[j + 1];
  15.                 a[j + 1] = temp;
  16.             }
  17.         }
  18.     }
  19.     for(i = 0; i < N; i++) {
  20.         cout << a[i] << " ";
  21.     }
  22.     cout << endl;
  23.     return 0;
  24. }
复制代码

这两段代码都是用于对输入的一组整数进行排序,并按照从小到大的顺序输出结果。

C语言版本使用了冒泡排序算法,通过比较相邻元素的大小进行交换,每次循环将最大的元素沉到末尾。

C++版本同样使用了冒泡排序算法,但使用了C++的cincout代替了C语言中的scanfprintf

以上是两段代码的简要说明。如有任何疑问,请随时提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-21 05:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表