码迷,mamicode.com
首页 > 编程语言 > 详细

循环经典--------冒泡排序,查找。

时间:2016-04-25 00:39:38      阅读:351      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!