话说老师讲算法已经有一段时间了,现在回忆起来那节课很生活、有很趣,下面呢就让在下总结一下那节课的收获,拒绝废话、进入主题:
前面的话:
选择、冒泡、插入虽然比较简单但是对于刚接触的偶来说,这三位大尊其思维逻辑性还是略强的,遇到这样的情况呢,对我来说走几遍代码或者follow代码的逻辑手算几遍,感觉效果不错,兔子们可以试一试;方法很多、掌握了就好。
选择排序:
static void Main(string[] args)
{
int[] numbers = { 2, 4, 5, 56, 6,7 };
int temp = 0;
for (int i = 0; i < numbers.Length; i++)
{
//循环J中 i+1所有变量和numbers[i]比较
for (int j = i+1; j < numbers.Length; j++)
{
//假设numbers[i]为最值
//如果前一个值[i]比后一值[j+1]小,则交换位置——前面永远是最大值
if( numbers [i]<numbers [j] )
{
temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
}
for (int a = 0; a < numbers.Length ; a++)//显示
{
Console.WriteLine(numbers[a].ToString());
}
Console.ReadKey();
}
冒泡排序:
冒泡排序的代码从“百度一下”结果一装一麻袋,所以代码部分就低调飘过好了~~~
冒泡排序总体思想是小数沉底,大数上浮;
比如:在需要排序的10个元素中相邻的两个元素进行比较,每次比较将最小的放在后面,大数前移,第一轮比较之后最小的数沉底、放于a(10)的位置;第二轮比较a(1)~a(9),使该轮最小值沉底,放于a(9)的位置,依次类推,排序完成;上(截)图一张:
插入排序:
插入排序给徒弟讲的时候,成功把他给绕进去了,(*^__^*) 嘻嘻……下面一本正经地总结一下(咳~~我是一个严肃的person) 为兔子们 呈上 抄来的代码 一段:
int[] numbers = { 17, 78, 56, 67, 77 };
for(int i=1;i<numbers .Length ;i++)
{
int t = numbers[i];
int j = i;
//j>0、前面的数大于后面的数,进入循环
while ((j>0)&&(numbers [j-1]>t))
{
//后一个数=前面的数——最后的数最大
numbers[j] = numbers[j - 1];
--j;//该处减一
}
numbers[j] = t;//所以现在的j是不同于while循环中的j,而是其前面的数
}
for(int ii=0;ii<numbers .Length ;ii++)
{
Console.WriteLine(numbers [ii].ToString ());
}
Console.ReadKey();
}
满足条件才开始循环,否则不循环:这是插入的special之处
开始百思不得其解,后来通过走代码,发现了个中奥秘,原来忽视了--j的作用,在while循环中 ”--j“ 通过 j 减1,跳出while循环的 j 已经不再是原来的 “j” 了,而是其前面的一位——
,其他的跟着代码走一遍,大家都这么聪明,我就不写了
![惊讶](http://static.blog.csdn.net/xheditor/xheditor_emot/default/ohmy.gif)
一些链接:
欢迎大家前来交流
THE END
THANKS FOR YOUR TIME(*^__^*) 嘻嘻……