两种代码都不对
本帖最后由 mamaaini 于 2023-11-19 19:52 编辑请你按照从小到大的顺序输出。
#include <stdio.h>
int main()
{
int N,i,j,temp;
scanf("%d",&N);
int a;
for(i=0;i<N;i++)
{
scanf("%d",&a);
}
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(a>a)
{
temp=a;
a=a;
a=temp;
}
}
}
for(i=0;i<N-1;i++)
{
printf("%d ",a);
}
printf("%d",a);
return 0;
}
#include <stdio.h>
int main()
{
int N,i,j,temp;
scanf("%d",&N);
int a;
for(i=0;i<N;i++)
{
scanf("%d",&a);
}
for(i=0;i<N-1;i++)
{
for(j=0;j<N-i-1;j++)
{
if(a>a)
{
temp=a;
a=a;
a=temp;
}
}
}
for(i=0;i<N;i++)
{
printf("%d ",a);
}
printf("\n");
return 0;
}
第一种代码使用了选择排序的方法,第二种代码使用了冒泡排序的方法。两种排序算法的时间复杂度都是O(n^2),但是它们的具体实现方式有所不同。
选择排序通过每一轮遍历找到最小的元素,然后将其放到相应位置,而冒泡排序则是通过相邻元素之间的比较和交换来逐步将最大的元素推向数组末尾。
选择排序的外层循环是遍历整个数组,内层循环是找到最小元素的过程;而冒泡排序的外层循环也是遍历整个数组,内层循环则是相邻元素之间的比较和交换过程。
因此,两种排序算法的核心思想是不同的,但都可以实现从小到大的排序。在实际应用中,选择排序通常比冒泡排序更快,因为选择排序的交换次数相对较少。 C语言代码:
#include <stdio.h>
int main() {
int N, i, j, temp;
scanf("%d", &N);
int a;
for(i = 0; i < N; i++) {
scanf("%d", &a);
}
for(i = 0; i < N; i++) {
for(j = i + 1; j < N; j++) {
if(a > a) {
temp = a;
a = a;
a = temp;
}
}
}
for(i = 0; i < N - 1; i++) {
printf("%d ", a);
}
printf("%d\n", a);
return 0;
}
C++代码:
#include <iostream>
using namespace std;
int main() {
int N, i, j, temp;
cin >> N;
int a;
for(i = 0; i < N; i++) {
cin >> a;
}
for(i = 0; i < N - 1; i++) {
for(j = 0; j < N - i - 1; j++) {
if(a > a) {
temp = a;
a = a;
a = temp;
}
}
}
for(i = 0; i < N; i++) {
cout << a << " ";
}
cout << endl;
return 0;
}
这两段代码都是用于对输入的一组整数进行排序,并按照从小到大的顺序输出结果。
C语言版本使用了冒泡排序算法,通过比较相邻元素的大小进行交换,每次循环将最大的元素沉到末尾。
C++版本同样使用了冒泡排序算法,但使用了C++的cin和cout代替了C语言中的scanf和printf。
以上是两段代码的简要说明。如有任何疑问,请随时提问。
页:
[1]