奇偶排序Odd-even sort
来源:互联网 发布:php生成二维码 编辑:程序博客网 时间:2024/06/05 04:29
奇偶排序Odd-even sort
参看 维基百科的定义
又一个比较性质的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序
举例,待排数组[6 2 4 1 5 9]
第一次比较奇数列,奇数列与它的邻居偶数列比较,如6和2比,4和1比,5和9比
[6 2 4 1 5 9]
交换后变成
[2 6 1 4 5 9]
第二次比较偶数列,即6和1比,5和5比
[2 6 1 4 5 9]
交换后变成
[2 1 6 4 5 9]
第三趟又是奇数列,选择的是2,6,5分别与它们的邻居列比较
[2 1 6 4 5 9]
交换后
[1 2 4 6 5 9]
第四趟偶数列
[1 2 4 6 5 9]
一次交换
[1 2 4 5 6 9]
using System;using System.Collections.Generic;namespace Com.Colobu.Algorithm.Exchange{ /// <summary> /// <b>奇偶排序</b>的思路是在数组中重复两趟扫描。 /// 第一趟扫描选择所有的数据项对,a[j]和a[j+1],j是奇数(j=1, 3, 5……)。 /// 如果它们的关键字的值次序颠倒,就交换它们。 /// 第二趟扫描对所有的偶数数据项进行同样的操作(j=2, 4,6……)。 /// 重复进行这样两趟的排序直到数组全部有序。 /// /// 平均时间复杂度:O(n^2) /// Stability:Yes /// </summary> public class OddEvenSortAlgorithm { public static void OddEvenSort<T>(IList<T> szArray) where T : IComparable { bool sorted = false; while (!sorted) { sorted = true; // odd-even for (int i = 1; i < szArray.Count - 1; i += 2) { if (szArray[i].CompareTo(szArray[i + 1]) > 0) { Swap(szArray, i, i + 1); sorted = false; } } // even-odd for (int j = 0; j < szArray.Count - 1; j += 2) { if (szArray[j].CompareTo(szArray[j + 1]) > 0) { Swap(szArray, j, j + 1); sorted = false; } } } } private static void Swap<T>(IList<T> szArray, int i, int j) { T tmp = szArray[i]; szArray[i] = szArray[j]; szArray[j] = tmp; } }}
0 0
- 奇偶排序Odd-even sort
- 经典排序算法 - 奇偶排序Odd-even sort
- 经典排序算法 – 奇偶排序Odd-even sort
- 经典排序算法 - 奇偶排序Odd-even sort
- Odd-even sort: Sorting by Exchanging
- 【Big data】Odd even merge sort
- (LeetCode)Odd Even Linked List --- 奇偶链表
- 经典排序算法 – 奇偶排序Odd
- LeetCode 328 Odd Even Linked List(奇偶链表)(Linked List)(*)
- LeetCode 328. Odd Even Linked List(链表的奇偶调整)
- 373.Partition Array by Odd and Even-奇偶分割数组(容易题)
- 奇偶排序(OddEven Sort)----(排序算法十一)
- Even Or Odd?
- Odd Even Linked List
- Odd Even Linked List
- Odd even Linked list
- Odd Even Linked List
- Odd Even Linked List
- 百度地图定位导航错误总结
- CC2541之SimpleBLEPeripheral程序流程分析 -- 03.App层事务处理
- ViewPager和Tabhost(tabhostfragment)结合
- h264解码时的AVCDecoderConfigurationRecord 与 CodecPrivateData
- 类的两个属性具有相同名称
- 奇偶排序Odd-even sort
- hadoop 2.6 NetworkTopology源代码分析
- C#中数据类型的基本了解
- Windows 已在xxx.exe中触发了一个断点
- vim 常用快捷键
- 关系型数据库和非关系型数据库
- 深入android6.0 设备 idle状态
- 使用Xcode HeaderDoc和Doxygen文档化你的Objective-C和Swift代码
- 输出内存数据的二进制和十六进制的字符串表示