zoukankan      html  css  js  c++  java
  • C# 四种基本排序算法(冒泡排序,插入排序,选择排序,快速排序)外加折半排序

    View
    class Program
        {
    
    
            static void Main(string[] args)
            {
                //BubbleSort();
                //SelectSort();
                //int[] arr = new int[] { 49, 38, 65, 97, 76, 13, 27 };
                int[] arr = GetNumber();
                QuickSort(arr, 0, arr.Length - 1);
                for (int i = 0; i < arr.Length; i++)
                {
                    Console.Write(arr[i] + " ");
                }
                Console.Read();
            }
            #region Random a new number
    
            public static int[] GetNumber()
            {
                int[] arr = new int[10];
                Random random = new Random();
                for (int i = 0; i < 10; i++)
                {
                    arr[i] = random.Next(DateTime.Now.Millisecond);
                }
                return arr;
            }
            #endregion Random a new number
            #region 冒泡排序
    
            public static void BubbleSort(int[] arr)
            {
                //int[] arr = new int[] { 13, 4, 6, 3, 8 };
                int temp;
                for (int i = 0; i < arr.Length - 1; i++)
                {
                    for (int j = 0; j < arr.Length - 1 - i; j++)
                    {
                        if (arr[j] > arr[j + 1])
                        {
                            temp = arr[j];
                            arr[j] = arr[j + 1];
                            arr[j + 1] = temp;
                        }
                    }
                }         
            }
            #endregion 冒泡排序
            #region 插入排序
            public static void InsertSort(int[] arr)
            {
                //int[] arr = new int[] { 13, 4, 6, 3, 8 };
                int i, j, temp;
                for (i = 1; i < arr.Length; i++)
                {
                    temp = arr[i];
                    for (j = i; j > 0; j--)
                    {
                        if (temp < arr[j - 1] && j > 0)
                        {
                            arr[j] = arr[j - 1];
                        }
                        else
                            break;
                    }
                    arr[j] = temp;
                }
            }
            #endregion 插入排序
            #region 选择排序
    
            public static void SelectSort(int[] arr)
            {
                //int[] arr = new int[] { 13, 4, 6, 3, 8 };
                int min, temp;
                for (int i = 0; i < arr.Length - 1; i++)
                {
                    min = i;
                    arr[min] = arr[i];
                    for (int j = i + 1; j < arr.Length; j++)
                    {
                        if (arr[min] > arr[j])
                        {
                            min = j;
                        }
                    }
                    temp = arr[i];
                    arr[i] = arr[min];
                    arr[min] = temp;
                }
            }
            #endregion 选择排序
            #region 快速排序
    
            public static void QuickSort(int[] arr, int left, int right)
            {
                int position;
                if (left < right)
                {
                    position = KeyValuePosition(arr, left, right);
                    QuickSort(arr, left, position - 1);
                    QuickSort(arr, position + 1, right);
                }
            }
            //Get keyValuePosition
            public static int KeyValuePosition(int[] arr, int left, int right)
            {
                //int[] arr = new int[] {  49, 38, 65, 97, 76, 13,27 };
                int low = left, high = right, key = arr[left];
                while (low < high)
                {
                    while (arr[high] > key)
                    {
                        high--;
                    }
                    if (low < high)
                    {
                        arr[low++] = arr[high];
                    }
                    while (arr[low] < key && low < high)
                    {
                        low++;
                    }
                    if (low < high)
                    {
                        arr[high--] = arr[low];
                    }
    
                }
                arr[low] = key;
                return low;
            }
            #endregion 快速排序
        }
            #region 折半插入排序
    
            
            private static void binaryInsertSort(int[] arr)
            {
                 
                for (int i = 1; i < arr.Length; i++)
                {
                    if (arr[i] >= arr[i - 1])
                        continue;//为什么吾加就有错呢 
                    int temp = arr[i], j;
    
                    int low = 0, high = i - 1, tem;
    
                    while (low <= high)
                    {
                        tem = (low + high) / 2;
                        if (temp > arr[tem])
                        {
                            low = tem + 1;
                        }
                        else if (temp < arr[tem])
                        {
                            high = tem - 1;
                        }
                        else
                            break;
                    }
                    j = i;
                    while (low < j)
                    {
                        arr[j] = arr[j - 1];
                        j--;
                    }
    
    
                    arr[j] = temp;
                }
                for (int i = 0; i < arr.Length; i++)
                {
                    Console.Write(arr[i] + " ");
                }
                Console.Read();
            }
            #endregion 折半插入排序
    

      

      

    Code
     class Program
        {
    
    
            static void Main(string[] args)
            {
                //BubbleSort();
                //SelectSort();
                //int[] arr = new int[] { 49, 38, 65, 97, 76, 13, 27 };
                int[] arr = GetNumber();
                QuickSort(arr, 0, arr.Length - 1);
                for (int i = 0; i < arr.Length; i++)
                {
                    Console.Write(arr[i] + " ");
                }
                Console.Read();
            }
            #region Random a new number
    
            public static int[] GetNumber()
            {
                int[] arr = new int[10];
                Random random = new Random();
                for (int i = 0; i < 10; i++)
                {
                    arr[i] = random.Next(DateTime.Now.Millisecond);
                }
                return arr;
            }
            #endregion Random a new number
            #region 冒泡排序
    
            public static void BubbleSort(int[] arr)
            {
                //int[] arr = new int[] { 13, 4, 6, 3, 8 };
                int temp;
                for (int i = 0; i < arr.Length - 1; i++)
                {
                    for (int j = 0; j < arr.Length - 1 - i; j++)
                    {
                        if (arr[j] > arr[j + 1])
                        {
                            temp = arr[j];
                            arr[j] = arr[j + 1];
                            arr[j + 1] = temp;
                        }
                    }
                }
                for (int i = 0; i < arr.Length; i++)
                {
                    Console.Write(arr[i] + " ");
                }
            }
            #endregion 冒泡排序
            #region 插入排序
            public static void InsertSort(int[] arr)
            {
                //int[] arr = new int[] { 13, 4, 6, 3, 8 };
                int i, j, temp;
                for (i = 1; i < arr.Length; i++)
                {
                    temp = arr[i];
                    for (j = i; j > 0; j--)
                    {
                        if (temp < arr[j - 1] && j > 0)
                        {
                            arr[j] = arr[j - 1];
                        }
                        else
                            break;
                    }
                    arr[j] = temp;
                }
            }
            #endregion 插入排序
            #region 选择排序
    
            public static void SelectSort(int[] arr)
            {
                //int[] arr = new int[] { 13, 4, 6, 3, 8 };
                int min, temp;
                for (int i = 0; i < arr.Length - 1; i++)
                {
                    min = i;
                    arr[min] = arr[i];
                    for (int j = i + 1; j < arr.Length; j++)
                    {
                        if (arr[min] > arr[j])
                        {
                            min = j;
                        }
                    }
                    temp = arr[i];
                    arr[i] = arr[min];
                    arr[min] = temp;
                }
            }
            #endregion 选择排序
            #region 快速排序
    
            public static void QuickSort(int[] arr, int left, int right)
            {
                int position;
                if (left < right)
                {
                    position = KeyValuePosition(arr, left, right);
                    QuickSort(arr, left, position - 1);
                    QuickSort(arr, position + 1, right);
                }
            }
            //Get keyValuePosition
            public static int KeyValuePosition(int[] arr, int left, int right)
            {
                //int[] arr = new int[] {  49, 38, 65, 97, 76, 13,27 };
                int low = left, high = right, key = arr[left];
                while (low < high)
                {
                    while (arr[high] > key)
                    {
                        high--;
                    }
                    if (low < high)
                    {
                        arr[low++] = arr[high];
                    }
                    while (arr[low] < key && low < high)
                    {
                        low++;
                    }
                    if (low < high)
                    {
                        arr[high--] = arr[low];
                    }
    
                }
                arr[low] = key;
                return low;
            }
            #endregion 快速排序
        }
  • 相关阅读:
    2018暑假假期周进度报告——第八周
    zf-关于评价器的开关所在的配置文件,与代码如何修改。
    不要点击一个功能就创建一个新的网页,要尽量少的新创建页面(例如:办事指南,点击一个部门创建一个网页,选择具体事项时,又创建一个网页,这样创建的网页太多)
    实现jsp页面显示用户登录信息,利用session保存。
    zf-关于更换页面,的各种问题。
    报错 BeanFactory not initialized or already closed
    Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds
    如果在一个实现类中改变另外一个类中的变量,但是怎么改网页上都没变化的问题。
    如果更新包更新包现场,class文件更新过去,没有改变,及时删掉,照样能进那个模块的问题。
    使用内链接(A a inner join B b on a.xx = b.xx)查询2个表中某一列的相同的字段。
  • 原文地址:https://www.cnblogs.com/Griffin/p/2738614.html
Copyright © 2011-2022 走看看