Heim  >  Artikel  >  Backend-Entwicklung  >  Cocktailsortierung (Doppelblasensortierung, Rührsortierung oder Wellensortierung)

Cocktailsortierung (Doppelblasensortierung, Rührsortierung oder Wellensortierung)

黄舟
黄舟Original
2017-02-09 16:22:072673Durchsuche

Cocktail-Sortierung (Doppelblasen-Sortierung, Rühr-Sortierung oder Wellen-Sortierung)

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;  
        }  
    }  
}

Cocktail-Sortierung entspricht einer geringfügigen Variation der Blasen-Sortierung. Der Unterschied besteht darin, dass die Blasensortierung von niedrig nach hoch und dann von hoch nach niedrig jedes Element in der Sequenz nur von niedrig nach hoch vergleicht. Es kann eine etwas bessere Leistung als die Blasensortierung erzielen, da die Blasensortierung nur in einer Richtung (von niedrig nach hoch) vergleicht und in jedem Zyklus nur ein Element verschiebt.

Mithilfe der Cocktailsortierung werden die Zahlen im Array unregelmäßig angeordnet. Suchen Sie zuerst die kleinste Zahl und setzen Sie sie an die erste Stelle, dann finden Sie die größte Zahl und setzen Sie sie an die letzte Stelle. Suchen Sie dann die zweitkleinste Zahl und setzen Sie sie an die zweite Stelle, und suchen Sie dann die zweitgrößte Zahl und setzen Sie sie an die vorletzte Stelle. Und so weiter, bis die Sortierung abgeschlossen ist.


Das Obige ist der Inhalt der Cocktailsortierung (Doppelblasensortierung, Rührsortierung oder Wellensortierung). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). .php.cn) !


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:C#-Heap-SortierungNächster Artikel:C#-Heap-Sortierung