C# 二分法查找和排序

Posted oreo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 二分法查找和排序相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.Text;

namespace AAA
{
    public class Dichotomy
    {
        public static void DichotomySort(int[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                int start = 0;

                int end = i - 1;

                int middle = 0;

                int temp = array[i];

                while (start <= end)
                {
                    middle = (start + end) / 2;

                    if (array[middle] > temp)//要排序元素在已经排过序的数组左边
                    {
                        end = middle - 1;
                    }
                    else
                    {
                        start = middle + 1;
                    }
                }
                for (int j = i - 1; j > end; j--)//找到了要插入的位置,然后将这个位置以后的所有元素向后移动
                {
                    array[j + 1] = array[j];
                }

                array[end + 1] = temp;

            }
        }

        public static long DichotomySearch(long[] array, long key, long high, long low)
        {
            long middle = 0;

            if (high < low)
            {
                return -1;
            }

            middle = (low + high) / 2;

            if (array[middle] == key)
            {
                return middle;
            }
            else if (array[middle] > key)
            {
                return DichotomySearch(array, key, middle - 1, low);
            }
            else
            {
                return DichotomySearch(array, key,high, middle + 1);
            }
        }
    }
}

以上是关于C# 二分法查找和排序的主要内容,如果未能解决你的问题,请参考以下文章

数组排序 和 二分法查找

二分法查找和冒泡排序

算法二分法 ② ( 排序数组中查找目标值 | 二分法的经典写法 | 在排序数组中查找元素的最后一个位置 | 二分法的通用模板 )

入门算法-二分查找,二分排序,插入排序,冒泡排序

二分查找和常用排序算法

数据结构简单谈一谈二分法和二叉排序树BST查找的比较