C语言用冒泡法对一维数组中数按降序进行排列

2020-11-22 09:47:16 字数 6052 阅读 1656

1楼:自我编程

#include

intmain()

;inti,j,num;

for(i=0;i<10;i++)

2楼:原姑娘

inta[10];/*存储用于排序的10个数*/inti;

inttemp;

intlabel;

do{label=0;

for(i=0;i<9;i++)

{if(a[i]!=0);

用c语言编写,输入10个数按降序排列

3楼:一个青年

源程序**如下:#define _crt_secure_no_warnings//vs环境下需要,vc不需要

#include//头文件;

int main()

;//定义三个变量和一个长度为10的数组;

printf("请输入十个数:\n");//显示“请输入十个数”

for (i = 0; i < 10; i++)for (i = 1; i < 10; i++)//for循环,进行9次循环;

else}}

for (i = 0; i < 10; i++)return 0;//返回值为0;

}程序运行结果如下:

扩展资料:其他实现方法如下:

#include

int mysort(int *a, int n)}}return 0;

}int main()

mysort(a, 10);

for (i = 9; i >= 0; i--)printf("%3d", a[i]);

printf("\n");

return 0;}

4楼:wo_相当厉害

#include "stdafx.h"

#include "stdio.h"

int main(int argc, char* argv)for(i=0;i<9;i++)}}

for(i=0;i<10;i++)

return 0;

}用选择法。

急:c语言中用冒泡发对10个一维数组按从小到大顺序排序,并输出。

5楼:龍__鳳

数组在内存中是顺序存储的,a[10]虽然越界,但是a[10]是有值的,你的程序升序排序能正确执行,你把if里面的》改成<,降序排序,程序就会出错,这是因为你的a[10]刚好是一个大数,a[9]>a[10]不成立,a[10]就没意义了。

要让你的程序无论升序还是降序都正确执行,改成for(i=0;i<9;i++)

for(j=i;j<10-i-1;j++)就行了

6楼:匿名用户

冒泡排序法,准确的形式应该是这样的:

for(i=0;i<9;i++)

for(j=0;j<10-i-1;j++)if(a[j]>a[j+1])

for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n");

7楼:匿名用户

其实,是你的两个循环错了,for(i=0;i<9;i++) for(j=0;j<10-i;j++) 这两个循环应该这样写for(i=1;i,开始i=1,j<9,则循环是从j=0到j=8 ,这样循环9次,也就是第一个数和后面9个数做比较,以下依次比较到最后,输出结果。

8楼:匿名用户

j不可能为9;这样你的两个问题都解决了!

#include

main()

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)//j<10-1-i这里错了

if(a[j]>a[j+1])

for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n");}

9楼:匿名用户

同学,首先解决问题1:

你的第一个问题分析的正确,a[10]的确越界了,这里越是你需要再处理一次的地方,每次其实j不应该到10-i而是10-i-1;为什么能够运行呢?

vs是下不行的。vc 6下没有检查数据边界,所以可以正常运行。我这边调试的时候显示a[10]也就是你说的越界的那个元素的值默认为:

1638280 所以呢,肯定不会因为if(a[j]>a[j+1])影响你的排序。

所以貌似可以正常运行。(你要是会调试肯定没有这个问题了)

问题2就是你理解的问题了,冒泡排序就是每次把最大的一个放到最后,那么下一轮就不需要该轮拍到最后的元素,例如 4 3 2 1变成 3 2 1 4 那么排的时候就不用考虑4了。到最后一轮时,本身只要排j=0的那么多拍了j=1 也是没有影响的,后面的都比之前的大,自然不要比较了啊!!!

说的也不是很清楚,希望可以解决你心头的疑惑。 求采纳哦!! (*^__^*) 嘻嘻……

c语言 用一个函数实现用冒泡法对十个整数升序和降序排列 麻烦写全些

10楼:昌大少年

运行通过

#include"stdio.h"

void main()

;int i,j,k;

for(i=0;i<9;i++)

for(j=i+1;j<10;j++)

if(a[i]>a[j]) //这种方式升序排列,若要降

序把"<"改成">"即可

for(i=0;i<10;i++)

printf("%d ",a[i]);

printf("\n");}

11楼:听不清啊

#include

voidsort1(inta,intn)}voidsort2(inta,intn){inti,j,t;

for(i=0;i

12楼:富强

main()}

13楼:匿名用户

降序#include

#definelen10

voidbubble_sort_desc(intarr,intlen)

}intmain(void)

升序#include

#definelen10

voidbubble_sort_asc(intarr,intlen)

}intmain(void)

14楼:匿名用户

void sort(int *p)}}}

c语言:采用冒泡排序方法,对10个数按由小到大的的顺序排序

15楼:凌乱心扉

**如下(对10个整数进行升序排序):

#include

int main()

;//排序

for(i=1;i<10;i++)//外循环控制排序趟数,n个数排n-1趟}}

printf("排序后的结果是:\n");

for(i=0;i<10;i++)

printf("\n");

return 0;

}冒泡法:

算法分析:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。

比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。

include用法:

#include命令预处理命令的一种,预处理命令可以将别的源**内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序**;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。

插入头文件的内容

#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:

1、#include《文件名》

2、#include"文件名"

如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:

#include//一些数学函数的原型,以及相关的类型和宏

如果需要包含针对程序所开发的源文件,则应该使用第二种格式。

采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。如下例所示:

#include"myproject.h"//用在当前项目中的函数原型、类型定义和宏

你可以在#include命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的#include命令。例1展示了这样的#include命令。

【例1】在#include命令中的宏

#ifdef _debug_

#define my_header"myproject_dbg.h"

#else

#define my_header"myproject.h"

#endif

#include my_header

当上述程序**进入预处理时,如果_debug_宏已被定义,那么预处理器会插入myproject_dbg.h的内容;如果还没定义,则插入myproject.h的内容。

16楼:匿名用户

**如下(对10个整数进行升序排序):

#include

int main()

;//排序

for(i=1;i<10;i++)//外循环控制排序趟数,n个数排n-1趟}}

printf("排序后的结果是:\n");

for(i=0;i<10;i++)

printf("\n");

return 0;}

17楼:匿名用户

用函数调用的方法编程:从键盘输入10个数,用冒泡法对10个数按由小到大顺序排序,并输出。/***...

18楼:258天啥抖

心理年龄的采用冒泡排序方法 对实际数字由小到大排列的顺序分别是一二三四五六七**十

19楼:朝颜_林西

冒泡排序方法的**如下:

#include

void main()}}

printf("qingyoudadaoxiaoshuchu: \n");

for(i=1;i<=10;i++)

printf("%d\n",a[i]);

}这个是我找的,知道里面没有的。

20楼:匿名用户

这是原始的冒泡法:

main()

,i,j,t;

for(i=0;i<10;i++)

printf("%5d",a[i]);

for(i=0;i<10;i++)

for(j=0;j<10-1;j++)if(a[j]>a[j+1])

for(i=0;i<10;i++)

printf("%5d",a[i]);

}这是改良后的冒泡排序:

main()

,i,j,t;

for(i=0;i<10;i++)

printf("%5d",a[i]);

for(i=0;i<10-1;i++)for(j=i+1;j<10;j++)if(a[i]>a[j])

for(i=0;i<10;i++)

printf("%5d",a[i]);}

21楼:匿名用户

#include

#include

intmain(void)

//冒泡排序

for(i=0;i<9;++i)}}//输出已经排序好的数

printf("输出已经排序好的数");

for(i=0;i<10;++i)

printf("\n");

return0;}