zoukankan      html  css  js  c++  java
  • 各种算法八

    各种算法八

        今天继续我们的各种基本算法滴呀;

     先来看看我们的插入排序滴呀;先来看看原理,网上找的一个非常好的实例gif

    我们已经看到了我插入排序的原理,那么下面,如何将显示映射带代码中,

    然后通过代码来一步一步的实现了

    //我们先看看,这个基本的算法;
            //方式一;就是一种方式的改写;
            public static void InsertSort(int [] arr)
            {
                for(int i = 1; i < arr.Length; i++)
                {
                    int insertValue = arr[i];
                    int insertIndex = i - 1;//插入到他的前面;
                    while (insertIndex >= 0 && insertValue < arr[insertIndex])
                    {
                        arr[insertIndex + 1] = arr[insertIndex];
                        insertIndex--;
                    }//一旦不满足他的条件,就跳出这个东东,插入;
                    arr[insertIndex + 1] = insertValue;
                    
                }
    
                Console.WriteLine("最总的结果");
                foreach (var i in arr)
                {
                    Console.Write(" {0} ", i);
                }
    
    
            

    然后......

    上面的那个是一步一步的去实现的,

    我这个是先找到指定的位置之后,然后我们再去进行移动和替换滴滴呀;效果还是可以滴呀;

    算了,我**妈,头都挣爆炸了;

    附带一个不太完整的代码;请大神指点:

          public static void InsertSort()
            {
                //基本个各种插入排序;
                //我们可以将数组元素的第一元素看成是是一个已经排好序的一个小数组,第二个元素和这个小数组进行比较滴呀;
                //这样的一个过程如何用代码来实现滴呀;实现由显示到虚拟的一个映射过程滴呀;
                //循环的从数组中取出
                //从显现实到虚拟的一步一映射;
                var arr = new int[] {5,6,2,3,1};
                //从数组中抽取元素,我们肯定会用到for循环;
                //笔记数的大小我们可定会用到> or <
                //插入其实就是一个赋值的过程
                //数组向后依次向后移动,肯定就是数组小标的改变滴呀;
                //算法真的好费脑筋;
                var len = arr.Length;
                for(var i = 0; i < len - 1; i++) //往后进行遍历
                {
                   
                    for(var j = i-1; j >= 0; j--) //往前进行遍历;
                    {
                        if (arr[i]>arr[j])                // 这里的判断条件有问题;
                        {
                            Move(i,j,arr);                 //开始移动我们的额数组滴呀;
    
                            Insert(j, arr[i], arr);   //你麻痹移动了之后我们还要插入滴呀;,插在他的前面 你妈卖比,,日尼玛的笔呀
    
                        }
                    }
                    //如果找打尽头还没找到小于它的数,就把它移动到前面;
                    //我日你的码的呀;
    
                }
    
    
                Console.WriteLine("最总的结果");
                foreach (var i in arr)
                {
                    Console.Write(" {0} ",i);
                }
    
    
            }
    
            public static void Move(int i,int j,int [] arr)
            {
                for(var index = i; index > j; index--)
                {
                    //然后开始移动 移动是从后开始;
                    arr[index] = arr[index - 1];
                }
            }
            public static void Insert(int index,int value,int [] arr)
            {
                arr[index] = value;
            }

    今天先这里........

  • 相关阅读:
    用php获取本周,上周,本月,上月,本季度日期的代码
    PHP取整,四舍五入取整、向上取整、向下取整、小数截取
    图解phpstorm常用快捷键
    web安全之如何防止CSRF跨站请求伪造
    Ajax同步异步的区别
    php中文件上传需要注意的几点
    D4 HL 数据结构
    D3 HL 模拟赛订正
    D2 HL 图的高级应用 网络流专题
    D1 HL 图的高级应用 tarjan算法
  • 原文地址:https://www.cnblogs.com/mc67/p/6226629.html
Copyright © 2011-2022 走看看