好久没冒泡了,今天看杨老大(神奇的杨中科)视屏的时候,他老人家亲自传授的冒泡神功~果然神奇~~完全不需要第三个变量,就可以交换两个变量的值。两个变量交换数据,不用头想都晓得要用第三个变量来中转那两个变量的值。可事实上真的需要第三个变量吗???
See here:
//冒泡类,单一职责原则(SRP):就是指对一个类而言,应该仅有一个引起它变化的原因。所以MaoPao类的职责就是排序的方式(正序和倒序),如果职责过多,增加元素值之和、之积、照相、极品飞车@@!改变一个类就要考虑多个动机,需要职责分离,一个职责的变化可能会抑制其他职责的能力。就会出现意想不到的“我们是它们的奴隶”@@!我们的设计不能这么脆弱,一定要降低耦合!!!
- class MaoPao
- {
- public MaoPao(int[] test)
- {
- foreach(int j in test)
- {
- for(int i=0;i<test.Length-1;i++)
- {
- if(test[i]>test[i+1])
- {
- /*注意:只用了test[i]和test[i+1]两个变量
- *相当于:a=a+b;
- * b=a-b;(原来的a)
- * a=a-b;(原来的b)
- */
- test[i]=test[i]+test[i+1];
- test[i+1]=test[i]-test[i+1];
- test[i]=test[i]-test[i+1];
- }
- }
- }
- foreach(int i in test)
- Console.WriteLine(i);
- }
- }