zoukankan      html  css  js  c++  java
  • C# 四种排序(没有写希尔排序)

     protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        //它的原理就是相邻的两个两个的比较,如果前面的数比后面的大,那么交换,它这个在比较完一次的时候可以得到最大的一个数,然后接着循环,每次外循环中内循环的次数比原来少一次。
        protected void btn_MaoPao_Click(object sender, EventArgs e)
        {
            int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = 0; j < arr.Length - i - 1; j++)
                {
                    if (arr[j] > arr[j + 1])
                    {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
            for (int k = 0; k < arr.Length; k++)
            {
                Response.Write(arr[k].ToString() + "<br />");
            }
        }
        //选择排序  向后冒泡获取最小值得索引保存最小值MinIndex  ,然后和第i个值进行数据交换
        protected void btn_Select_Click(object sender, EventArgs e)
        {
            int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
            int minIndex = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                minIndex = i;
                for (int j = i; j < arr.Length; j++)
                {
                    if (arr[j] < arr[minIndex])
                    {
                        minIndex = j;
                    }
                }
                int temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }
            for (int k = 0; k < arr.Length; k++)
            {
                Response.Write(arr[k].ToString() + "<br />");
            }
        }
        //插入排序
        //此种算法是一次循环每一个元素,然后在每一个为基值再一次循环小于基值的每一个元素,
        protected void btn_Insert_Click(object sender, EventArgs e)
        {
            int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
            for (int i = 0; i < arr.Length; i++)
            {
                int temp = arr[i];
                int j = i;
                while (j > 0 && arr[j - 1] > temp)
                {
                    arr[j] = arr[j - 1];
                    --j;
                }
                arr[j] = temp;
            }
            for (int k = 0; k < arr.Length; k++)
            {
                Response.Write(arr[k].ToString() + "<br />");
            }
        }
        protected void btn_Fast_Click(object sender, EventArgs e)
        {
            int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
            quick_sort(arr, 0, arr.Length - 1);
            for (int k = 0; k < arr.Length; k++)
            {
                Response.Write(arr[k].ToString() + "<br />");
            }
        }
        //快速排序   //从右向左找第一个小于x的数   //从左向右找第 一个大于x的数
        private void quick_sort(int[] s, int l, int r)
        {
             if (l < r)
            {
                int i = l, j = r, x = s[l];
                while (i < j)
                {
                    while (i < j && s[j] >= x)//从右向左找第一个小于x的数
                    {
                        j--;
                    }
                    if (i < j)
                    {
                        s[i] = s[j];
                        i++;
                    }
                    while (i < j && s[i] < x)//从左向右找第 一个大于x的数
                    {
                        i++;
                    }
                    if (i < j)
                    {
                        s[j] = s[i];
                        j--;
                    }
                }
                s[i] = x;
                quick_sort(s, l, i - 1);
                quick_sort(s, i + 1, r);
            }
  • 相关阅读:
    21:动量与学习率衰减
    20:减弱过拟合
    19:train-val-test划分(以检测过拟合挑选最好的模型参数)
    18:激活函数与GPU加速
    17:全连接网络的创建以及参数优化(创建,训练,测试[计算准确度],可视化)以及Flatten层的自定义代码
    小程序获取视频播放的长度
    小程序传参简单理解
    小程序导航的应用
    小程序底部导航
    小程序手机登陆 定时器 清除定时器
  • 原文地址:https://www.cnblogs.com/TNSSTAR/p/2955660.html
Copyright © 2011-2022 走看看