c语言 输入十个整数,从大到小排序,并输出来。求解题思路

 我来答
晴说科技
2019-07-13 · 科技数码资讯分析,解读不一样视角!
晴说科技
采纳数:7 获赞数:8913

向TA提问 私信TA
展开全部

1、数组形式。

解题思路: 判断比较的躺数,每趟相邻的两个数再进行比较,应用两次 for 循环

具体代码:

void PrintArr(int* arr, int sz)

{

int i = 0;

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

{

printf("%d ", *(arr + i));

}  

return 0;

}

void BubbleSort(int arr[],int  sz)

{

int i = 0;

for (i = 0; i < sz - 1; i++)

{

int j = 0;

for (j = 0; j < sz - i - 1; j++)//用for循环的元素个数控住多少趟

{

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

{

int tmp = arr[j];

arr[j] = arr[j+1];

arr[j + 1] = tmp;

}

}

}

}

int main()

{

int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

int sz = sizeof(arr) / sizeof(arr[0]);

BubbleSort(arr, sz);

PrintArr(arr, sz);

system("pause");

return 0;

}

2、指针形式。

创建两个变量start、end,记住数组起始与结束位置元素的地址,应用两次 while 循环交换地址

指针冒泡排序 :

void PrintArr(int* arr, int sz)

{

int i = 0;

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

{

printf("%d ", *(arr + i));

}  

return 0;

}

void BubbleSort(int *arr, int  sz)

{

int start = arr;

int end = arr + sz - 1;

//趟数

while (start < end)

{

int *cur = start;

while (cur < end)

{

if (*cur > *(cur+1))

{

int tmp = *cur;

*cur = *(cur + 1);

*(cur + 1) = tmp;

}

cur++;

}

end--;

}

}

int main()

{

int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

int sz = sizeof(arr) / sizeof(arr[0]);

BubbleSort(arr, sz);

PrintArr(arr, sz);

system("pause");

return 0;

}

扩展资料:

算法原理

冒泡排序算法的原理如下:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

Luck3192
推荐于2017-10-15 · TA获得超过1141个赞
知道小有建树答主
回答量:497
采纳率:100%
帮助的人:390万
展开全部

冒泡排序:

#include<stdio.h> 

int main()

{ int a[10];

int i,j,t;

printf("input 10 numbers:\n");

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

scanf("%d",&a[i]);//输入10个数值

printf("\n");

for(j=0;j<9;j++) //进行9轮比较

for(i=0;i<9-j;i++) //每一轮中进行9-j次比较

if(a[i]<a[i+1]) //相邻两个数比较

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

printf("output 10 numbers:\n");

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

printf("%d ",a[i]); //按顺序输出10个数值

printf("\n");

return 0;

}

当然很多行可以省掉。只是这样更清楚。

追问
太感谢了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
111lvming
2015-01-21
知道答主
回答量:52
采纳率:0%
帮助的人:10.5万
展开全部
输入十个数保存到,整形的数组中然后用选择排序。
int temp=0; //临时存储
int[] array={6,5,7,8,1,9,3,2,0,4};
for(int i=0;i<10;i++)
{
for (int k = i + 1; k < 10; k++)
{
if (array[i] > array[k])
{
temp = array[k];
array[k] = array[i];
array[i] = temp;
}
}
} //即可
追问
不是很明白
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
志懿隐
2015-01-21 · 超过12用户采纳过TA的回答
知道答主
回答量:164
采纳率:0%
帮助的人:79万
展开全部
#include<stdio.h>
int main()
{int a[10],i;
for(i=0;i<10;i++) //用于十个元素排例。
scanf(“%d”,&a[i]);//对十个元素输入数值
for(i=0;i<10;i++)//从小到大排例输入的十个元素。
printf(“%d”,a[i]);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牧涯七少
2015-01-21 · 超过18用户采纳过TA的回答
知道答主
回答量:192
采纳率:0%
帮助的人:37.6万
展开全部
用冒泡法 看书上例题 或者网上搜冒泡法 现在一下记不得那么多编码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式