改造了的冒泡
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace BubbleSort
7 {
8 class Program
9 {
10
11 static void Main(string[] args)
12 {
13 int[] people ={ 1, 3, 4, 5, 6, 8, 9, 22, 55, 31, 32, 56, 22, 99, 100, 20, 2, 22, 44, 66 };
14 for (int i = 0; i < people.Length; i++)
15 {
16 for (int j = i; j < people.Length; j++)
17 {
18 int pangpang;
19 if (people[i] > people[j])
20 {
21 pangpang = people[i];
22 people[i] = people[j];
23 people[j] = pangpang;
24 }
25 }
26 }
27 foreach (int getoff in people)
28 {
29 Console.Write(getoff+" ");
30 }
31 Console.ReadLine();
32 }
33 }
34 }
北京的地铁啊,实在是痛苦,尤其是一号线,还好多车没空调,大热天的,本来就热,再加上车里面人比空气还多,谁都想到站赶紧下车喘口气,哎,憋死我了,呵呵,哪天线都换车了,怎么就一号线不换车呢,害的每次走出复兴门,我都是一身大汗,郁闷啊实在郁闷。。。。。好像跑题了,这个和我上面给的程序没啥关系,好的,那么我们言归正传。
呵呵,冒泡排序,再简单不过了,不过可能对于新入门的程序员来说,这个算法检验了FOR和IF最直接的用法,有时候根本记不住或者无法运用得当,那么我们怎么能入门进入程序的世界呢。
程序这东西其实和实际生活是分不开的,我们结合实际演绎一下冒泡的现实版。今天就拿地铁和冒泡做下结合。
加入我们上面的INT数组就是我们车厢里面的人,数组中数字大小就是我们还有几站到站,也就是我们的下车需求,越小说明应该更靠近门,越应该早下车。嗯,那么这样我们就需要一个规则来让我们有序的排好队,按照需求排队下车(咳咳,不遵守规则的我们就忽略了, 虽然不少这样没有素质的人,但是大多数的我们还是守规则的,是吧)。
一声号令,车开动了,这时候站在门口的40岁秃顶哥们就开始对他后面的小姑娘说,小姐,我还90站下车,您还几站啊【if (people[i] > people[j])】。小姑娘说了,啊,我还1站。那我们换下吧,这时候胖胖出现,就是我们定义的【int pangpang】,他一来,两臂一架,气运丹田,嘿~~换,这时候第1个哥们和第2个小姐就换了位置,接着小姐为还有比我早的嘛,没有我就站第一个了,你们就别问我了(每次内层循环可以少访问一次【(int j = i; j < people.Length; j++)】)。车厢内鸦雀无声,第外层循环第一遍迭代完成。然后小姐后面的人问了下,也就是那个40岁左右的秃头,结果他又换了位置。哦哦哦。就这样,大家都换到了满意的位置。
嗯,这就是生活和程序的结合,其实每种算法还原为现实生活都是可以还原的,我们可以抽象,也可以还原的。
交换过程:
最终结果: