您的位置:首页 > 编程语言 > C#

补充:二分查找,冒泡,选择

2017-12-27 21:41 316 查看
using System;

namespace lesson04_01

{
class MainClass
{
public static void Main (string[] args)

        {

            /*

             * 用冒泡排序法排列数组下列数组并打印排序后的数组:

             * double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10.5, 8 };

             */

            /*

           double[] arr = {12,90,14,84,34,9,23,55,10,5,8};

           int i, j,k;

           double temp;

           for (j = 1; j <= arr.Length; j++) {

               for (i = 0; i <= arr.Length - j-1; i++) {

                   if (arr[i] > arr[i + 1]) {

                       temp = arr[i];

                       arr[i] = arr[i + 1];

                       arr[i + 1] = temp;

                   }

               }

           }

           for (k = 0; k < 11; k++) {

               Console.WriteLine(arr[k]);

           }

           */

            /*

            用选择排序法排列数组下列数组并打印排序后的数组:

           double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };

           int j, i, index,h;

           double min;

           for (j = 0; j < arr.Length; j++)

           {

               min = arr[j];

               index = j;

               for (i = j+1; i < arr.Length; i++)

               {

                   if (arr[i] < min)

                   {

                       min = arr[i];

                       index = i;

                   }

               }

               arr[index] = arr[j];

               arr[j] = min;

           }

           for (h = 0; h < arr.Length; h++)

           {

               Console.WriteLine(arr[h]);

           }

           Console.ReadKey();

           */

            //四道数组练习--临时存放

            //练习1:从⼀一个整数数组中取出最⼤大的整数

            /*double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };

             *  

            int i;

            double max = arr[0];

            for(i= 0; i < arr.Length; i++)

            {

                    if (arr[i] > max)

                    {

                        max = arr[i];

                    }

                }

            Console.WriteLine(max);

            Console.ReadKey();

            */

            //练习2:计算⼀一个整数数组的所有元素的和

            /*

            double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };

            int i;

            double sum=0;

            for (i = 0; i < arr.Length; i++)

            {

                sum += arr[i];

            }

            Console.WriteLine(sum);

            Console.ReadKey();

            */

            /*练习3:将⼀一个字符串串数组输出为|分割的形式,

            比如“梅梅⻄西 | 卡卡 | 郑⼤大世”

            string[] strarr = { "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾", "佰", "仟", "萬" };

            int i;

            for(i = 0;i < strarr.Length; i++)

            {

                if (i < strarr.Length-1)

                {

                Console.Write("{0}|",strarr[i]);

                }

                else

                {

                    Console.Write(strarr[i]);

                }

            }

            Console.ReadKey();

            */

            /*

             * 练习4:将⼀一个字符串串数组的元素的顺序进⾏行行反转。

                {“3”,“a”,“8”,“haha”}

                {“haha”,“8”,“a”,“3”}。

                第i个和第length-i-1个进⾏行行交换。

             */

            /*

           string[] arr = {"东","3","a","1","2","8","haha","西"};

           int i,j;

           string temp;

           for (i = 0; i < arr.Length / 2; i++)

           {

               temp = arr[i];

               arr[i] = arr[arr.Length - 1 - i];

               arr[arr.Length - 1 - i] = temp;

           }

           for (j = 0; j < arr.Length; j++)

           {

               Console.WriteLine(arr[j]);

           }

           Console.ReadKey();

           */

            /*三道-临时存放

             * 1.编程将所有“水仙花数”打印出来,并打印其总个数。

            “水仙花数”是一个 各个位立方之和等于该整数的三位数。

            int i, sum,a,b,c,n=0;

            for (i = 100; i < 1000; i++)

            {

                a = i / 100;

                b = i % 100 / 10;

                c = i % 10;

                sum = a * a * a + b * b * b + c * c * c;

                if (sum == i)

                {

                    Console.WriteLine(i);

                    n++;

                }

            }

            Console.WriteLine(n);

            Console.ReadKey();

            2.自定义一个数组并求数组中的所有元素最大值、最小值、平均值及各元素之和。

            int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

            int i, sum=0, average=0, max=0, min=0;

            for(i = 0; i < arr.Length; i++)

            {

                if (max < arr[i])

                {

                    max = arr[i];

                }

                if (min > arr[i])

                {

                    min = arr[i];

                }

                sum += arr[i];

                average = sum / arr.Length;

            }

            Console.WriteLine("max={0}\nmin={1}\naverage={2}\nsum={3}",max,min,average,sum);

            Console.ReadKey();

            3.已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。

            int i, a, b, c, sum,n=0;

            for (i = 100; i < 1000; i++)

            {

                a = i / 100;

                b = i % 100 / 10;

                c = i % 10;

                sum = i + c * 100 + b * 10 + a;

                if(sum == 1333)

                {

                    n++;

                    Console.WriteLine("第{0}组:a={1} b={2} c={3}",n,a,b,c);

                }

            }

            Console.ReadKey();

            

             */

            /*

             * while循环条件low!=high

             * 比较key,arr[mid] , mid = (low +high)/2

             * 当key在左边缩小high=mid,当key在右边提升low=mid;

             * 

             */

             /*二分查找,先排序

            double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };

            int i, j, index, h;

            double min;

            for (j = 0; j < arr.Length; j++)

            {

                min = arr[j];

                index = j;

                for (i = j + 1; i < arr.Length; i++)

                {

                    if (arr[i] < min)

                    {

                        min = arr[i];

                        index = i;

                    }

                }

                arr[index] = arr[j];

                arr[j] = min;

            }

            int key = int.Parse(Console.ReadLine());

            int low = 0, high = arr.Length,mid;

            while (low <= high)

            {

                mid = (low + high) / 2;

                if (arr[mid] == key)

                {

                    Console.WriteLine("你要找的数是:{0}他是该数组的{1}个元素",arr[mid],mid+1);

                    break;

                }

                else if (arr[mid] > key)

                {

                    high = mid - 1;

                }

                else {

                    low = mid + 1;

                }

            }

            if (low > high)

            {

                Console.WriteLine("你要查找的数不在该数组中!");

            }

          

            Console.ReadKey();

            */

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息