• 12月28 数组的几种应用(冒泡、折半查找)


    *************数组的应用*************

    一、冒泡排序(升序、降序)

     1、双层循环(循环套循环)

    (1).冒泡排序是用双层循环解决。外层循环的是趟数,里层循环的是次数
    (2).趟数=n-1;次数=n-趟数。
    (3).里层循环使用if比较相临的两个数的大小,进行数值交换。

    打分:(去掉两个最高分,去掉两个最低分)

     static void Main(string[] args)
            {
                int[] a = new int[10]{ 10, 12, 6, 9, 5, 4, 3, 17, 1, 15 };
                int i, j, temp = 0,sum=0;
                double avg = 0.0;
                //冒泡排序
                for (i = 1; i < a.Length; i++)
                {
                    for (j = 1; j <= a.Length - i; j++)
                    {
                        if (a[j - 1] < a[j])
                        {
                            temp = a[j];
                            a[j] = a[j - 1];
                            a[j - 1] = temp;
                        }
                    }
                }
                Console.WriteLine("去掉两个最高分,去掉两个最低分后分别得:");
                for (i = 2; i <= a.Length - 3; i++)
                {
                    Console.Write(a[i] + "");
                    sum += a[i];
                }
                Console.WriteLine();
                avg = 1.0 * sum / (a.Length - 4);
                Console.WriteLine("得分总和为"+sum + "分。	");
                Console.WriteLine("平均分为"+avg + "分。	");
            }

    二、折半查找(也叫二分法)

    1、前提:数组必须有序。

    2、主要就是3个未知量。

    顶部:topsub

    底部:bottomsub

    中间:midsub =(topsub+bottomsub)/2

    将数组一分为二,然后拿需要查找的数与midsub作比较,如果比midsub大,则舍弃上半部分,然后将下半部分一分为二,找到midsub再做比较,以此类推,直到找到为止。

    static void Main(string[] args)
            {
                int[] a = new int[8] { 3 ,4, 5, 7, 8 ,9, 12,14};
                int top = 0, bottom = a.Length - 1, mid;
                
    
                Console.Write ("请输入一个数字");
                int n=Convert.ToInt32(Console.ReadLine());
                //折半查找
                while (bottom >= top)
                { 
                    mid=(bottom+top)/2;
                    if (a[mid] < n)
                    {
                        top = mid + 1;
                    }
                    else if (a[mid] > n)
                    {
                        bottom = mid - 1;
                    }
                    else 
                    {
                        Console.Write("找到了,在第"+(mid+1)+"个元素上");
                        break;
                    }
                
                }
            }

    其实筛选有更简单的方法:在数组a中,a.where();筛选   a.OrderBy();排序

  • 相关阅读:
    C#异步调用的好处和方法
    asp.net运行原理
    基于jQuery的AJAX和JSON的实例
    Slq Server创建索引
    SQL查询一个表中类别字段中Max()最大值对应的记录
    优化SQL Server的内存占用之执行缓存
    ASP.NET缓存
    .NET Framework 4.5新特性
    ADO.NET 连接数据库字符串(Oracle、SqlServer、Access、ODBC)
    sql server基础
  • 原文地址:https://www.cnblogs.com/tzq9308/p/4190831.html
Copyright © 2020-2023  润新知