閱讀553 返回首頁    go 汽車大全


C# 雞尾酒排序(雙冒泡排序、攪拌排序或漣漪排序)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Sort
{
    class CockTailSorter
    {
        private static int[] myArray;
        private static int arraySize;
        public static int[] Sort(int[] myArray)
        {
            arraySize = myArray.Length;
            CockTailSort(myArray);
            return myArray;
        }
        public static void CockTailSort(int[] myArray)
        {
            int low, up, index, i;
            low = 0;//數組起始索引
            up = myArray.Length - 1;//數組索引最大值
            index = low;//臨時變量
	   //判斷數組中是否有多個元素
            while (up > low)//每一次進入while循環都會找出相應範圍內最大最小的元素並分別放到相應的位置
            {
		//進入該for循環會將索引限定範圍內最大的元素放到最右邊
                for (i = low; i < up; i++)//從上向下掃描
                {
                    if (myArray[i] > myArray[i + 1])
                    {
                        Swap(ref myArray[i], ref myArray[i + 1]);
                        index = i;//記錄當前索引
                    }
                }
                up = index;//記錄最後一個交換的位置
		//進入該for循環會將索引限定範圍內最小的元素放到最左邊
                for (i = up; i > low; i--)//從最後一個交換位置從下往上掃描
                {
                    if (myArray[i] < myArray[i - 1])
                    {
                        Swap(ref myArray[i], ref myArray[i - 1]);
                        index = i;
                    }
                }
                low = index;//記錄最後一個交換的位置
            }
        }
        private static void Swap(ref int left, ref int right)
        {
            int temp;
            temp = left;
            left = right;
            right = temp;
        }
    }
}

雞尾酒排序等於是冒泡排序的輕微變形。不同的地方在於從低到高然後從高到低,而冒泡排序則僅從低到高去比較序列裏的每個元素。他可以得到比冒泡排序稍微好一點的效能,原因是冒泡排序隻從一個方向進行比對(由低到高),每次循環隻移動一個項目。

使用雞尾酒排序,數組中的數字本是無規律的排放,先找到最小的數字,把他放到第一位,然後找到最大的數字放到最後一位。然後再找到第二小的數字放到第二位,再找到第二大的數字放到倒數第二位。以此類推,直到完成排序。


作者:jiankunking 出處:https://blog.csdn.net/jiankunking


最後更新:2017-04-03 12:54:13

  上一篇:go EditPlus v3.50.164 注冊碼
  下一篇:go 如何讓Pl/Sql查出的某個值可編輯?