1. 程式人生 > >基本排序算法(C#)

基本排序算法(C#)

blog -- 選擇排序 class select ole new sort 直接

        #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); } } #endregion

基本排序算法(C#)