排序八:鸡尾酒排序

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace CocktailSort
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             int[] arr = new int[100];
14             Random rd = new Random();
15             for (int i = 0; i < arr.Length; i++)
16             {
17                 arr[i] = rd.Next(100);
18             }
19             Sort(arr);
20         }
21
22         public static void Sort(int[] arr)
23         {
24             //需要来回arr.Length/2趟
25             for (int i = 0; i < arr.Length / 2; i++)
26             {
27                 //类冒泡,交换最大值至右端
28                 for (int j = i; j < arr.Length - i - 1; j++)
29                     if (arr[j] > arr[j + 1])
30                         Swap(arr, j, j + 1);
31                 //类冒泡,交换最小值至左端
32                 for (int j = arr.Length - i - 1; j > i; j--)
33                     if (arr[j] < arr[j - 1])
34                         Swap(arr, j, j - 1);
35             }
36             foreach (int i in arr)
37                 Console.WriteLine(i);
38         }
39
40         public static void Swap(int[] arr, int left, int right)
41         {
42             int temp = arr[left];
43             arr[left] = arr[right];
44             arr[right] = temp;
45         }
46     }
47 }
时间: 2024-08-07 20:16:47

排序八:鸡尾酒排序的相关文章

经典排序算法 - 鸡尾酒排序Cocktail sort

经典排序算法 - 鸡尾酒排序Cocktail sort 鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 3 4 5 1] 第二步迭代,3 < 4不换 [2 3 4 5 1] 第三步迭代,4 < 5不换 [2 3 4 5 1] 第四步迭代,5 > 1交换 [2 3 4 1 5] 第一趟回来时的第一步,鸡尾酒一次到头后就回返回来,再到头后再过去,来回比,一个来回能排两个数字 第五步迭代,1 &l

Hark的数据结构与算法练习之鸡尾酒排序

算法说明 鸡尾酒排序又叫定向冒泡排序,鸡尾酒搅拌排序,搅拌排序,涟漪排序,回来排序,快乐小时排序. 鸡尾酒排序是交换排序的一种,它是冒泡排序的一个轻微的变种.冒泡是从低向高比较排序,鸡尾酒从低向高,从高向低交换着进行排序.大家看一下代码就知道了. 某些特殊有序数组情况下,鸡尾酒排序是效率略好于冒泡排序,例如: int[] arrayData = { 2, 3, 4, 5, 6, 7, 8, 9, 1 }; 鸡尾酒排序只排序一次就能出结果,而冒泡排序就需要8次才能出结果. 代码 使用的是java

视频动画 | 什么是鸡尾酒排序?

鸡尾酒排序其实就是冒泡排序的变形,它的时间复杂度和冒泡排序一样,都是O(n^2),比快速排序要慢不少. 鸡尾酒排序算法 鸡尾酒排序的思想有点像摆钟一样,从左到右,又从右到左.而冒泡排序只是单向执行. 鸡尾酒排序也是交换排序,假设做一个升序排序,先从左到右,交换一趟把最大的数放置右边,然后从右到左,把最小的数放置左边. 视频动画 Code Result 初始状态 [5, 1, 9, 3, 7, 4, 8, 6, 2] 从左到右发生交换 [1, 5, 9, 3, 7, 4, 8, 6, 2] 从左到

鸡尾酒排序Cocktail sort

鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 3 4 5 1] 第二步迭代,3 < 4不换 [2 3 4 5 1] 第三步迭代,4 < 5不换 [2 3 4 5 1] 第四步迭代,5 > 1交换 [2 3 4 1 5] 第一趟回来时的第一步,鸡尾酒一次到头后就回返回来,再到头后再过去,来回比,一个来回能排两个数字 第五步迭代,1 < 5不交换 [2 3 4 1 5] 第六步迭代,1

数据结构——排序——鸡尾酒排序算法

鸡尾酒排序,也就是定向冒泡排序, 鸡尾酒搅拌排序, 是冒泡排序的一种变形.此算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序. 使用鸡尾酒排序为一列数字进行排序的过程 鸡尾酒算法原理 i. 先对数组从左到右进行升序的冒泡排序:  ii. 再对数组进行从右到左的降序的冒泡排序:  iii. 以此类推,持续的.依次的改变冒泡的方向,并不断缩小没有排序的数组范围: 例:         88     7     79     64     55     98     48     52    

八种排序算法

最近一段时间自己在研究各种排序算法,于是自己写了一个八种排序算法的集合: /************************************************************************* > Copyright (c)2014 stay hungry,stay foolish !!! > File Name: sort.cpp > Author: kanty > Mail: [email protected] > Created Time:

排序算法之鸡尾酒排序

昨天中午北京温度为40度,在中午12:16分我来到篮球场,思考了1分钟决定开站 转球: 我和另外3名队友开始半场, 球传到我手的刹那顿时烫的我持球不稳,顿时问道了淡淡的胶皮味道和烤肉味道的混搭. 这时我来了一个腾空跳投, 球---------爆炸了........ 听新闻说昨天在路上都是 "熟人" 一位老大爷不慎被车刮倒了,大爷二话没说立马爬了起来,围观众人议论纷纷: "大爷人不错","大爷素质真高","大爷身体可真好" 大爷

八种排序算法(内部排序)

八种排序算法很长时间没有使用了,今天做一个总结,方便以后自己用的时候参考. 这八种排序算法都是内部算法,这八种排序算法分别是: 1. 插入排序 1)直接插入排序 2)希尔排序 2.选择排序 1)简单选择排序 2)堆排序 3.交换排序 1)冒泡排序 2)快速排序 4.归并排序 5.基数排序 一.直接插入排序 将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数增1的有序表.在实际操作中,先将序列的第一个记录看成是一个有序的子序列,然后从第二个.第三个.……记录逐个进行插入,直至整个序列有

鸡尾酒排序(双冒泡排序、搅拌排序或涟漪排序)

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.Len

简单排序,冒泡排序,鸡尾酒排序,快速排序

简单排序:每次找出最大(小)的数,从头开始依次排序. 1 public static int[] simplySort(int a[]) { 2 for (int i = 0; i < a.length - 1; i++) { 3 // int min = a[i]; 4 int minIndex = i; 5 for (int j =i + 1; j < a.length; j++) { 6 //我的代码 7 // if (a[j] < min) { 8 // min = a[j];