嵌套for循环

问题描述

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){int[]elments=newint[5];//声明长度为5的数组intindex;//计数器变量inttemp;//临时变量Console.WriteLine("输入要排序的5个值");//for循环接受用户输入的值for(index=0;index<elments.Length;index++){elments[index]=int.Parse(Console.ReadLine());}Console.WriteLine("n已排序的数组");//嵌套for循环对值进行比较for(index=0;index<elments.Length;index++){for(intj=index+1;j<elments.Length;j++)-------------这一句话是啥意思???{//如果不以升序排列,就教换这些值if(elments[index]>elments[j]){temp=elments[index];elments[index]=elments[j];elments[j]=temp;}}Console.WriteLine(elments[index]);}}}}

解决方案

解决方案二:
这个应该是冒泡排序,你仔细想一下,应该能明白的......
解决方案三:
引用1楼duanfengo7的回复:

这个应该是冒泡排序,你仔细想一下,应该能明白的......

同意
解决方案四:
这个有点意思。
解决方案五:
for(intj=index+1;j<elments.Length;j++)-------------这一句话是啥意思???j从index指向的下一个数开始,遍历到最后一个,分别和index指向的数比较,如果elments[index]>elments[j])就交换,是升序排列!
解决方案六:
不难吧?好发好分析一下;
解决方案七:
冒泡排序,看看数据结构for(intj=index+1;j<elments.Length;j++)比较当前位置元素是否大于后面元素实现数据交换也可用for(intj=0;j<elments.Length-1-i;j++)还可双向排序
解决方案八:
标准的冒泡法排序啊?里面的for起点为index+1主要是让前面已经排好序的不再参与计算了,因为前面的已经计算过了,所以每次计算的时候都以当前要排序的位置向后计算,以减少无用的计算量。C语言的基础教程里有讲冒泡法排序的例子。
解决方案九:
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceText{classProgram{staticvoidMain(string[]args){int[]count=newint[5];//需要排序的数组inti,j;//循环变量inttemp;//临时变量//读入数组Console.WriteLine("请输入5个数:");for(i=0;i<5;i++){Console.WriteLine("输入第{0}个数:",i+1);count[i]=int.Parse(Console.ReadLine());//类型转换}//开始排序-----------冒泡排序for(i=0;i<count.Length-1;i++)//控制比较多少轮{//将最大的元素交换到最后for(j=0;j<count.Length-1-i;j++){if(count[j]>count[j+1]){//交换元素temp=count[j];count[j]=count[j+1];count[j+1]=temp;}}}//排序后输出Console.WriteLine("排序后:");for(i=0;i<count.Length;i++){Console.WriteLine("{0}t",count[i]);}Console.ReadLine();}}}

解决方案十:
楼主的代码是用二重循环实现的冒泡排序算法:大原则是依次比较相邻的两个数,将小数放在前面,大数放在后面。这个例子中,假定输入的五个值是:81543比较过程如下:18543  (经过:8:11:51:41:3四轮比较,结果第1 位1最小)158431485313854  (经过:8:55:44:3三轮比较,第2位3最小)1358413485  (经过:8:55:4  二轮比较,第3位 4最小)13458(经过:8:5)一轮比较 第4位 5最小即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第1个数和第3个数,将小数放前,大数放后,如此继续。重复以上过程,从第2个数开始,如此下去,直至最终完成排序。  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。  用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复5次,内循环依次重复4,3,2,1次。for(intj=index+1;j<elments.Length;j++) 这句就是内循环体.intj=index+1 表示 从外循环的下一个无素开始,分别与index位的值比较,找出外循环(index)位置的最小值,至到最后一位.这样:内循环执行一周,就能比较出外循环的一位最小数了。
解决方案十一:
一个for用于循环次数,另一个用于循环个数,必须小于数组的上界!就是冒泡法么!
解决方案十二:
@laoas,@lzsh0622楼主的算法不是冒泡排序,虽然有点类似,也很普通,冒泡是两个相邻的元素之间的比较和交换,而楼主的算法不是,你们会把它弄晕的,@yuanmanguo已经说的很清楚了
解决方案十三:
冒泡升序排列
解决方案十四:
引用11楼youzelin的回复:

@laoas,@lzsh0622楼主的算法不是冒泡排序,虽然有点类似,也很普通,冒泡是两个相邻的元素之间的比较和交换,而楼主的算法不是,你们会把它弄晕的,@yuanmanguo已经说的很清楚了

?楼主的算法不是冒泡排序???请11楼贴出冒泡排序算法来,让大家学习一下。
解决方案十五:
总之呢,这就是对该数组的一个升序排列了
解决方案:
看来大笨狼的建议是非常好的。PS:楼主学过C语言没?
解决方案:
看这个帖子里大笨狼的回复http://topic.csdn.net/u/20090805/16/1c97b67f-9767-4ebf-a074-20aeb16a665a.html?92862
解决方案:
只是讨论楼主的程序结构而已,实际开发过程中,排序有现成的方法。
解决方案:
冒泡冒泡~
解决方案:
就是在循环里面再执行一次循环。循环索引j从index+1到elments.Length-1
解决方案:
不过排序现在不用这么费劲,使用方法Array.Sort(array)就可做到了。int[]it={3,4,99,1,5,2};for(inti=0;i<it.Length;i++){Console.WriteLine("第{0}个数为{1}",i,it[i]);}Console.WriteLine("排序后为:");Array.Sort(it);for(inti=0;i<it.Length;i++){Console.WriteLine("第{0}个数为{1}",i,it[i]);}

-------------------------------------------OUTPUT:第0个数为3第1个数为4第2个数为99第3个数为1第4个数为5第5个数为2排序后为:第0个数为1第1个数为2第2个数为3第3个数为4第4个数为5第5个数为99
解决方案:
还是最后这个简单,但是这个简单是简单。算不算是冒泡了呢。。。
解决方案:
比較的次數例如你的5個數:第一次的時候需要比較4次;第二次的時候需要比較3次;依此類推。
解决方案:
引用9楼lzsh0622的回复:

楼主的代码是用二重循环实现的冒泡排序算法:大原则是依次比较相邻的两个数,将小数放在前面,大数放在后面。这个例子中,假定输入的五个值是:81543比较过程如下:18543  (经过:8:11:51:41:3四轮比较,结果第1 位1最小)15843148531385……

给力,这样解释别人容易理解
解决方案:
en灰常好理解
解决方案:
大家学学数据结构,很明显是“选择排序”,每次选择最小/最大的一个数放到上一次计算结果的后面。
解决方案:
for(index=0;index<elments.Length;index++)//从第一个元素开始遍历{for(intj=index+1;j<elments.Length;j++){//从当前元素的下一个开始遍历,找到较小值,并且与当前值交换if(elments[index]>elments[j]){temp=elments[index];elments[index]=elments[j];elments[j]=temp;}}

这种算法效率不高,是很简单的排序算法
解决方案:
为什么现在学C#的人都不学C语言了...楼住的排序是最慢的,建议直接用array.sort
解决方案:
晕,为啥呢?明明是选择排序,都说是冒泡排序。。。
解决方案:
额,也不是。。。好像,都不是。。。

时间: 2024-09-30 08:55:28

嵌套for循环的相关文章

嵌套-for循环提高效率的方式

问题描述 for循环提高效率的方式 以前看到过一个文章说的这方面,具体的不记得所以来问问,大致是这样的: 1.在嵌套for循环中使用字典(hashtable?)而不是把所有的都遍历 2.当时我个人觉得有点类似: from a in table1 from b in table2 对比: fram a in table1 join b in table2 on ... 的效率对比 忘记具体怎么说的了,可能我没有表述清楚 希望能说一说在嵌套for循环中使用字典避免多次循环提高效率的方式 解决方案 前

java嵌套for循环的跳出

问题描述 java嵌套for循环的跳出 for(Object object : objects) { for(Object2 object2 : objects2) { if(x>0)...... } } 怎么才能让if(x>0)时结束object2的循环,并且让object执行下一次循环 !在线等,求救 解决方案 或者加上一个判断变量,但是那样写起来麻烦. 刚才网络不好,多说两句这个方案. boolean shouldcontinue; for(Object object : objects

《Java 7程序设计入门经典》一3.16 嵌套的循环

3.16 嵌套的循环 正如在前面的例子中看到的一样,一个循环可以嵌套在另一个循环里.嵌套的循环可以用来解决很多编程问题,是编程的必要部分.所以,在结束Java循环语句的解说前,再来关注一个嵌套循环的例子.下面的程序就对于2-100之间的整数,用一个嵌套的for循环找到每个数除1和它本身以外的所有因子.注意,外层循环产生需要获得因子的所有整数.内层循环判定整数的因子. 下面是程序的部分输出: 在这个程序中,外层循环使变量i从2变化到100.内层循环测试从2到i的每个整数,输出那些能将i整除的整数.

c嵌套while循环-谁可以帮我解释下这个循环的嵌套么?最好来几个简单例题

问题描述 谁可以帮我解释下这个循环的嵌套么?最好来几个简单例题 如图所示的这几个版型嵌套,看是看懂了些,就差例题该怎么循环该怎么个顺序,不懂不懂不懂. 解决方案 1.两个while迭代2.两个do while3.两个for4.while.do while5.for.while6.do while.for就是两个迭代嵌套,没啥解释的 解决方案二: 图太不清楚了,建议还是文字吧

详解Python中循环语句的嵌套使用

  这篇文章主要介绍了举例详解Python中循环语句的嵌套使用,是Python入门中的基础知识,需要的朋友可以参考下 Python编程语言允许在一个循环内嵌套另一个循环.下面将介绍几个例子来说明这一概念. 语法 在Python中嵌套循环语句的语法如下: ? 1 2 3 4 for iterating_var in sequence: for iterating_var in sequence: statements(s) statements(s) Python编程语言允许在一个循环内嵌套另一个

编程-关于c语言循环嵌套的问题

问题描述 关于c语言循环嵌套的问题 完全数是其各因子之和正好等于本身的数,如6=1+2+3,28=1+2+4+7+14所以6,8都是完全数,请编程找出2-20000内的所有完全数.输入整数n,输出第n个完全平方数.第一种: #include <stdio.h> void main() { int ins=0k=0; scanf(""%d""&n); for(i=2;i<=20000;i++s=0) { for(int j=1;j<i;

C#用链式方法表达循环嵌套_C#教程

一.起缘 故事缘于一位朋友的一道题: 朋友四人玩LOL游戏.第一局,分别选择位置:中单,上单,ADC,辅助:第二局新加入的伙伴要选上单,四人可选位置变为:中单,打野,ADC,辅助:要求,第二局四人每人不得选择和第一局相同的位置,请问两局综合考虑有多少种位置选择方式? 对于像我这边不懂游戏的人来讲,看不懂.于是有了这个版本: 有4个人,4只椅子,第一局每人坐一只椅子,第二局去掉第2只椅子,增加第5只椅子,每人坐一只椅子,而且每个人不能与第一局坐相同的椅子.问两局综合考虑,共有多少种可能的情况? 我

讲解C++的do while循环和循环语句的嵌套使用方法_C 语言

用do-while语句构成循环do-while语句的特点是先执行循环体,然后判断循环条件是否成立.其一般形式为: do 语句 while (表达式); 它是这样执行的:先执行一次指定的语句(即循环体),然后判别表达式,当表达式的值为非零("真") 时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束.可以用下图表示其流程. [例]用do-while语句求1+2+3+-+100. #include <iostream> using namespace

ThinkPHP循环标签的使用

这篇文章的环境与<ThinkPHP框架试用>一文大致相同,区别在于我更改了入口文件,将项目文件单 独放在一个文件夹下,方便管理!更改后的入口文件大致如下: <?php define('THINK_PATH', 'ThinkPHP/'); define('APP_NAME', 'myApp'); define('APP_PATH', 'myapp'); require(THINK_PATH."/ThinkPHP.php"); $App = new App(); $App