黑马程序员—内外层循环以及冒泡排序法

时间:2021-09-19 12:25:40

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

 

内外层循环以及冒泡排序法是对循环语法的深入和延伸,对初学者来说还是比较难理解的。

在学习之前,最好先对成员变量局部变量有一个比较深刻的了解。

C#中时没有全局变量的。

只有定义在类中的成员变量。

局部变量是指在程序中,只在特定过程或函数中可以访问的变量,作用域只是本函数函数,即局部变量的作用域从声明处到该函数的结束。

 

 

比如在代码段

inta, b, c;

           for(int i = 100; i < 1000; i++)

           {

               a = i / 100;

               b = (i % 100) / 10;

               c = i - a * 100 - b * 10;

 

               if(a * a * a + b * b * b + c * c * c == i)

               {Console.WriteLine(i);}

           }

 

           Console.ReadKey();

中,

i则是局部变量,只能在for循环中被使用,一旦for执行完毕,i的生命周期也就结束了。

 

 

注:

  1.当成员变量与局部变量重名的时候,起作用的是局部变量,成员变量被屏蔽掉。

    2.千万不要让局部变量重名!

 

 

 

 

内外层循环是对for循环的延伸,一般是对每一个元素都需要进行某种循环操作,这时外层循环保证每个元素都会被取到,内存循环控制需要做的循环操作,

代表程序有九九乘法表:

           for(int i = 1; i < 10; i++)//循环取出1-9作每行的第一个乘数

           {

 

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

               {

                   Console.Write("{0}*{1}={2}\t", i, j, i * j);//这一行的行数与第二个乘数的乘法表达式

 

 

               }

               Console.WriteLine();

 

 

 

冒泡排序 是一种基础的也是目前常用的排序方法。

缺点:效率比较低;

两个优点:1.编程复杂度很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。

冒泡排序的基本思路是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

  用二重循环实现,外循环变量设为i,内循环变量设为j。假如有10个数需要进行排序,则外循环重复9次,内循环依次重复98...1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]a[j+1]标识,i的值依次为1,2,...,9,对于每一个i,j的值依次为1,2,...10-i

 

 

冒泡排序的基本构架是

 

           for(int i = 0; i <数组名.length - 1; i++)

           {

 

               for(int j = 0; j <数组名.length - 1 - i; j++)

 

               {

               if(>/<)

               交换语句

               }

           

           }

 

建议把这个结构牢牢记住!

 

 

 

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------