标签:
1、冒泡排序
将8个整数进行升序排列
22 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
3 | 22 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
4 | 4 | 22 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 10 | 10 | 10 | 10 |
11 | 11 | 11 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 22 | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 10 | 10 | 10 | 11 | 11 | 11 | 11 |
55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 33 | 33 | 33 | 33 | 33 | 33 | 10 | 10 | 10 | 10 | 12 | 12 | 12 | 12 | 12 | 12 | 12 |
66 | 66 | 66 | 66 | 66 | 66 | 33 | 33 | 33 | 33 | 33 | 33 | 55 | 10 | 10 | 10 | 10 | 10 | 33 | 33 | 33 | 33 | 33 | 33 | 33 | 33 | 33 | 33 | 33 |
33 | 33 | 33 | 33 | 33 | 33 | 66 | 10 | 10 | 10 | 10 | 10 | 10 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 |
10 | 10 | 10 | 10 | 10 | 10 | 10 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 |
趟数 | 第1趟 | 第2趟 | 第3趟 | 第4趟 | 第5趟 | 第6趟 | 第7趟 | |||||||||||||||||||||
次数 | 比7次 | 比6次 | 比5次 | 比4次 | 比3次 | 比2次 | 比1次 | |||||||||||||||||||||
关系: 趟数:n-1,次数:n-i |
程序代码:
static void Main(string[] args) { int[] a = new int[8] {22,3,4,11,55,66,33,10 }; //升序排列 for(int i=1;i<=a.Length;i++) { for (int j=0;j<a.Length-i;j++) {if(a[j]>a[j+1]) { int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } //输出数组a //for (int i = 0; i<8;i++ ) //{ // Console.WriteLine(a[i]); //} foreach(int b in a) { Console.WriteLine(b); } }
2、顺序查找
注意:
体会布尔型 bool meizhaodao=true;在本题中的作用;
体会break的作用;
程序代码:
static void Main324234(string[] args) {//输入要找的数 Console.WriteLine("请输入你要找的数:"); int find = Convert.ToInt32(Console.ReadLine()); int[] a = new int[]{ 2, 11, 55, 77, 4, 3, 2, 6 }; //查找 bool meizhaodao = true;//如果不加,没法输出“找不到”这句话 for (int i = 0;i<=7;i++) {if(a[i]==find) { meizhaodao =false; Console.WriteLine("找到了,是第{0}个数。",i+1); break; //如果不加,数组含有2个find,可能输出2个找到了。 } } if(meizhaodao==true) { Console.WriteLine("没找到"); } }
3、二分法查找------找英语单词
思路:
首先将要排序的数组或集合排序(冒泡排序法)
然后查找中间数,看看中间数==find?如果相等,输出找到了,并且终止循环;---循环体
如果find>中间数,去掉前面的一半,继续用二分法在后面一半数里面找;----循环体
如果find<中间数,去掉后面的一半,继续用二分法在前面的一半里头找;----循环体
重复循环,直到结束下标<开始下标时,输出没有找到,并终止循环。
进一步分析:写出本题的循环体和循环条件需要有一个开始下标、中间下标、结束下标。
程序代码:
static void Main67778(string[] args) { //输入你要找的数 Console.WriteLine("请输入你要找的数:"); int find=Convert.ToInt32( Console.ReadLine()); int[] a = new int[]{11,22,33,44,55,66,77,88,99}; //查找 int kaishi= 0, jieshu =a.Length-1; for (; ; ) { int mid = (kaishi + jieshu) / 2; if(find==a[mid]) { Console.WriteLine("找到了,是第{1}个数",mid+1); break; } else if (find >a[mid]) { kaishi = mid + 1; } else { jieshu = mid - 1; } if(kaishi>jieshu) { Console.WriteLine("没找到"); break; } } }
标签:
原文地址:http://www.cnblogs.com/jinshui/p/5428783.html