• 有关冒泡排序法的问题


     1. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)

    解1: select top 10 * from A where id not in (select top 30 id from A)
    解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)


    2. 有一组数字:20 , 10 ,8, 30, 5, 1, 2, 22 请用编程的方式冒泡排序法进行由小到大的方式排序。
    从小到大的排序
    class Program
        {
            public static void Sort(int[] myArray)

            {

            // 取长度最长的词组 -- 冒泡法
            for (int j = 1; j < myArray.Length;j++)
            {
                for (int i = 0; i < myArray.Length - 1; i++)
                {
                     // 如果 myArray[i] > myArray[i+1] ,则 myArray[i] 上浮一位
                    if (myArray[i] >myArray[i + 1])
                    {

                       int temp = myArray[i];
                        myArray[i] = myArray[i + 1];
                        myArray[i + 1] = temp;
                    }

                }
            }
            }
           static void Main(string[] args)
           {
                int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22};
                Sort(myArray);
               for (int m = 0; m < myArray.Length; m++)
                {
                    Console.WriteLine(myArray[m]);
                }
            }

    从大到小的排序

    class Program
       {
            public static void Sort(int[] myArray)
            {
           // 取长度最长的词组 -- 冒泡法
            for (int j = 1; j < myArray.Length;j++)
            {
                for (int i = 0; i < myArray.Length - 1; i++)
               {
                     // 如果 myArray[i] < myArray[i+1] ,则 myArray[i] 下沉一位
                   if (myArray[i] < myArray[i + 1])
                    {
                       int temp = myArray[i];
                       myArray[i] = myArray[i + 1];
                        myArray[i + 1] = temp;
                    }

               }
           }
           }
            static void Main(string[] args)
            {
                int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22 };
               Sort(myArray);
               for (int m = 0; m < myArray.Length; m++)
              {
                    Console.WriteLine(myArray[m]);
                }
           }

    3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......
    求第30位数是多少, 用递归算法实现。
    public class MainClass
        {
            public static void Main()
            {
                Console.WriteLine(Foo(30));
            }
            public static int Foo(int i)
            {
                if (i <= 0)
                    return 0;
                else if(i > 0 && i <= 2)
                    return 1;
                else return Foo(i -1) + Foo(i - 2);
            }
        }



    4. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

    要求: 1.要有联动性,老鼠和主人的行为是被动的。

    2.考虑可扩展性,猫的叫声可能引起其他联动效应。

    答:
    要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
        public interface Observer
        {
           void Response();    //观察者的响应,如是老鼠见到猫的反映
      }
        public interface Subject
        {
            void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
        }
        public class Mouse : Observer
        {
            private string name;
            public Mouse(string name, Subject subj)
            {
              this.name = name;
               subj.AimAt(this);
           }
            public void Response()
            {
                Console.WriteLine(name + " attempt to escape!");
            }
        }
        public class Master : Observer
       {
            public Master(Subject subj)
            {
                subj.AimAt(this);
            }
            public void Response()
            {
               Console.WriteLine("Host waken!");
           }
       }
      public class Cat : Subject
      {
          private ArrayList observers;
           public Cat()
            {
               this.observers = new ArrayList();
            }
            public void AimAt(Observer obs)
           {
                this.observers.Add(obs);
            }
            public void Cry()
            {
                Console.WriteLine("Cat cryed!");
                foreach (Observer obs in this.observers)
               {
                    obs.Response();

                }
           }
       }
        class MainClass
        {
            static void Main(string[] args)
            {
                Cat cat = new Cat();
                Mouse mouse1 = new Mouse("mouse1", cat);
               Mouse mouse2 = new Mouse("mouse2", cat);
                Master master = new Master(cat);
                cat.Cry();
            }
        }

  • 相关阅读:
    葡萄城报表介绍:数据报表的七个原则
    while(scanf("%d",&n)!=EOF)
    不容易系列之(3)—— LELE的RPG难题
    错排公式
    _​_​i​n​t​6​4​ ​与​l​o​n​g​ ​l​o​n​g​ ​i​n​t
    杭电ACM 2046 阿牛的EOF牛肉串
    C++Builder 中使用 __int64 整数的问题
    折线分平面——杭电2050
    复合梯形公式与复合辛普森公式求积分
    两套蓝桥杯热身题
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3262959.html
Copyright © 2020-2023  润新知