请算法简单点(1)

来源:互联网 发布:淘宝客不计入销量了吗 编辑:程序博客网 时间:2024/05/19 03:17

一、change your mind

其实算法很难,但是我们可以从最简单的开始学啊~~,学着学着就简单了。

二、这就是算法~

(一)从最简单的开始吧(都是从小到大排的)

(1)选择

   

        static void Main(string[] args)        {            int[] nums = new int[] { 5, 2, 1, 4, 3 };            int temp = 0;            int minIndex = 0;            for (int j = 0; j < nums.Length ; j++)            {                minIndex = j;                for (int i = j; i < nums.Length ; i++)                {                    if (nums[i] > nums[minIndex])                    {                        minIndex = i;                    }                }                temp = nums[minIndex];                nums[minIndex] = nums[j];                nums[j] = temp;                Console.WriteLine(nums[j] + "\t");            }                        Console.ReadKey();        }


(2)冒泡

        static void Main(string[] args)        {            int[] nums = new int[] {5,2,1,4,3};            int temp = 0;            for (int j = 0; j < nums.Length-1; j++)            {                for (int i = 0; i < nums.Length - 1 - j; i++)                {                    if (nums[i]< nums[i + 1])                    {                        temp = nums[i];                        nums[i] = nums[i + 1];                        nums[i + 1] = temp;                    }                }                            }            for (int i = 0; i < nums.Length; i++)            {                Console.WriteLine(nums[i] + "\t");                            }            Console.ReadKey();                  }

(3)插入

 for (int i = 1; i < nums.Length; i++)       {            int temp= nums[i];  //首先记住这个预备要插入的数            int j = i - 1; //找出它前一个数的下标            //如果这个条件满足,说明,我们还没有找到适当的位置            while (j <= 0 && temp  < nums[j])   //这里小于是升序,大于是降序             {                  nums[j + 1] = nums[j];   //同时把比插入数要大的数往后移                  j--;                           }                //插入              nums[j + 1] = temp;

选择排序与交换排序是不一样的

选择排序:假设一个是最大的,其他所有元素一次与之相比较,最后选出最大的放在变量中保存起来。

交换排序:相邻两个之间相比较,并交换,将最大的冒出来。

(二)加深一点难度

(1)快速排序

    键值,轴值

(2)希尔排序

    按照固定间隔进行划分并不断

(3)堆排序

    找出中间值,上下进行比较


(三)算法设计

(1)时间复杂度

  时间复杂度是指,输入规模n与总运行时间之间的关系。

(2)分治

   1.递归

   2.分治

(3)动态规划

     1.最后子结构

    2.重叠子问题

 小结:时隔这么多天,再次编辑,发现没有办法写下去了,所以就写了一篇新的。让算法变得简单,加油。


原创粉丝点击