3个回答
2013-08-01
展开全部
冒泡排序法,折半查找法。折半是有一定的顺序的中找,利用折半减少查找次数。
、没优化的冒泡我就不说了,优化的说是拿第一个元素跟后面的一个个比较,大的或小的放到第一个,这样第一次比较出来的就是最大的或最小的,然后第二个在跟后面的元素一个个比较,找出第二大或第二小,依此到完,用到二个FOR循环。
、没优化的冒泡我就不说了,优化的说是拿第一个元素跟后面的一个个比较,大的或小的放到第一个,这样第一次比较出来的就是最大的或最小的,然后第二个在跟后面的元素一个个比较,找出第二大或第二小,依此到完,用到二个FOR循环。
2013-08-01
展开全部
//这个好像叫冒泡法吧,反正我习惯了用这个,给你讲一下它的思想
#include<stdio.h>
void main()
{
int i;
int j;
int a[10];
int temp;
/* 这一部分和算法无关,是输入部分 */
printf( "请输入5个数:\n" );
for( i=0; i<5; i++ ) {
scanf( "%d", &a[i] );
}
/* 这一部分是精髓 */
for( i=0; i<5; i++ ) { //这个循环i从0取到4,就是遍历了真个a数组
for( j=i+1; j<5; j++ ) { //这个循环j从i+1到4,
if( a[i] > a[j] ) { //步骤在最下面
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
/* 这一部分和算法无关,是输出部分 */
printf( "从小到大的顺序为:\n" );
for( i=0; i<5; i++ ) {
printf( "%d ", a[i] );
}
}
/*
1.当i=0时,进入第二个循环,a[0]与a[j]比较,如果a[0]>a[j]就交换两个值,然后继续比较,这样一轮下来,a[0]中保存的必然是最小值
2.当i=1时,进入第二个循环,a[1]与a[j]比较,如果a[1]>a[j]就交换两个值,然后继续比较,这样一轮下来,a[1]中保存的必然是第二小的值
依次类推
*/
#include<stdio.h>
void main()
{
int i;
int j;
int a[10];
int temp;
/* 这一部分和算法无关,是输入部分 */
printf( "请输入5个数:\n" );
for( i=0; i<5; i++ ) {
scanf( "%d", &a[i] );
}
/* 这一部分是精髓 */
for( i=0; i<5; i++ ) { //这个循环i从0取到4,就是遍历了真个a数组
for( j=i+1; j<5; j++ ) { //这个循环j从i+1到4,
if( a[i] > a[j] ) { //步骤在最下面
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
/* 这一部分和算法无关,是输出部分 */
printf( "从小到大的顺序为:\n" );
for( i=0; i<5; i++ ) {
printf( "%d ", a[i] );
}
}
/*
1.当i=0时,进入第二个循环,a[0]与a[j]比较,如果a[0]>a[j]就交换两个值,然后继续比较,这样一轮下来,a[0]中保存的必然是最小值
2.当i=1时,进入第二个循环,a[1]与a[j]比较,如果a[1]>a[j]就交换两个值,然后继续比较,这样一轮下来,a[1]中保存的必然是第二小的值
依次类推
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-01
展开全部
比较大小,
1如果只有两个数
用if语句。
if(a>b)
*****
else
*****
根据需要输出。
2如果多的话可以用冒泡法
用循环嵌套
for(i=0;i<=9;i++)
for(j=0;j<=9-i;j++)
*******根据需要输出。
具体过程书中会有。
1如果只有两个数
用if语句。
if(a>b)
*****
else
*****
根据需要输出。
2如果多的话可以用冒泡法
用循环嵌套
for(i=0;i<=9;i++)
for(j=0;j<=9-i;j++)
*******根据需要输出。
具体过程书中会有。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询