zoukankan      html  css  js  c++  java
  • 基本排序算法(C#)

            #region Algorithm
            static void SelectionSorter()//选择排序
            {
                int[] list = new int[] { 9, 5, 6, 89, 2, 0, 12, 895, 1, 6 };
                for (int i = 0; i < list.Length - 1; i++)
                {
                    int min = i;
                    for (int j = i + 1; j < list.Length; j++)
                    {
                        if (list[j] < list[min])
                        {
                            min = j;
                        }
                    }
                    var t = list[i];
                    list[i] = list[min];
                    list[min] = t;
                }
                foreach (var item in list)
                {
                    Console.WriteLine(item);
                }
            }
    
            static void EbullitionSorter()//冒泡排序
            {
                int[] list = new int[] { 9, 5, 6, 89, 2, 0, 12, 895, 1, 6 };
                for (int i = 0; i < list.Length - 1; i++)
                {
                    for (int j = 0; j < list.Length - 1 - i; j++)
                    {
                        if (list[j + 1] < list[j])
                        {
                            int t = list[j + 1];
                            list[j + 1] = list[j];
                            list[j] = t;
                        }
                    }
                }
                foreach (var item in list)
                {
                    Console.WriteLine(item);
                }
            }
    
            static void QuickSort(int[] arry, int left, int right)//快速排序
            {
                if (left < right)
                {
                    int i = left, j = right;
                    int x = arry[i];
                    while (i < j)
                    {
                        while (i < j && arry[j] >= x)
                        {
                            j--;
                        }
                        arry[i] = arry[j];
                        while (i < j && arry[i] <= x)
                        {
                            i++;
                        }
                        arry[j] = arry[i];
                    }
                    arry[i] = x;
                    QuickSort(arry, left, i - 1);
                    QuickSort(arry, j + 1, right);
                }
            }
            static void QuickTest()
            {
                int[] arry = new int[] { 9, 2, 4, 56, 2, 87, 1, 0, 12, 2, 9 };
                QuickSort(arry, 0, arry.Length - 1);
                foreach (var i in arry)
                {
                    Console.WriteLine(i);
                }
            }
    
            static void InsertSort()//直接插入排序
            {
                int[] arry = new int[] { 1, 3, 4, 2, 56, 2, 87, 1, 0, 12, 2, 9 };
                for (int i = 1; i < arry.Length; i++)
                {
                    if (arry[i - 1] > arry[i])
                    {
                        int j;
                        int temp = arry[i];
                        for (j = i - 1; j >= 0 && arry[j] > temp; j--)
                        {
                            arry[j + 1] = arry[j];
                        }
                        arry[j + 1] = temp;
                    }
                }
                foreach (var i in arry)
                {
                    Console.WriteLine(i);
                }
            }
    
            static void BinaryInsertSort()//二分插入排序
            {
                int[] arry = new int[] { 1, 3, 4, 2, 56, 2, 87, 1, 0, 12, 2, 9 };
                for (int i = 0; i < arry.Length; i++)
                {
                    var temp = arry[i];
                    int low = 0;
                    int high = i - 1;
                    int mid = 0;
                    while (low <= high)
                    {
                        mid = (low + high) / 2;
                        if (temp < arry[mid])
                        {
                            high = mid - 1;
                        }
                        else
                        {
                            low = mid + 1;
                        }
                    }
                    int j = 0;
                    for (j = i - 1; j >= high + 1; j--)
                    {
                        arry[j + 1] = arry[j];
                    }
                    arry[j + 1] = temp;
                }
                foreach (var i in arry)
                {
                    Console.WriteLine(i);
                }
            }
    
            static void ShellSort()//希尔排序
            {
                int[] arry = new int[] { 1, 3, 4, 2, 56, 2, 87, 1, 0, 12, 2, 9 };
                int i, j, gap;
                for (gap = arry.Length / 2; gap > 0; gap /= 2)
                {
                    for (i = gap; i < arry.Length; i++)
                    {
                        if (arry[i - gap] > arry[i])
                        {
                            int temp = arry[i];
                            for (j = i - gap; j >= 0 && arry[j] > arry[i]; j -= gap)
                            {
                                arry[j + gap] = arry[j];
                            }
                            arry[j + gap] = temp;
                        }
                        //for (j = i - gap; j >= 0 && arry[j] > arry[i]; j -= gap)
                        //{
                        //    int temp = arry[j];
                        //    arry[j] = arry[j + gap];
                        //    arry[j + gap] = temp;
                        //}
                    }
                }
                foreach (var item in arry)
                {
                    Console.WriteLine(item);
                }
            }
            #endregion
  • 相关阅读:
    a 去虚框
    清除浮动
    【IE6】float:left margin-left翻倍【浮动块增加属性:-display:inline;】
    linux学习笔记(九):系统运行状况查看、磁盘、网络
    linux学习笔记(八):管理文件、文件搜索、文件查看、文件对比
    linux学习笔记(七):shell命令语法
    linux学习笔记(五):开机、关机、开机日志
    Windows 10 远程桌面出现身份验证错误:要求的函数不受支持(解决)
    (转) java 通过 jdbc 链接 ms sql server 中出现 "no suitable driver for ..."
    (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线
  • 原文地址:https://www.cnblogs.com/zxxxx/p/7400507.html
Copyright © 2011-2022 走看看