Shell排序
来源:互联网 发布:mac os 10.13 dmg下载 编辑:程序博客网 时间:2024/05/20 05:59
1、冒泡排序
冒泡排序是最慢的排序算法。在实际运用中它是效率最低的算法。它通过一趟又一趟地比较数组中的每一个元素,使较大的数据下沉,较小的数据上升。它是O(n^2)的算法。
2、插入排序
插入排序通过把序列中的值插入一个已经排序好的序列中,直到该序列的结束。
3、Shell排序
Shell排序通过将数据分成不同的组,先对每一组进行排序,然后再对所有的元素进行一次插入排序,以减少数据交换和移动的次数。平均效率是O(nlogn)。
冒泡排序C#实现:
///
/// 冒泡排序
///
public class BubbleSort : ISort
{
public int[] Sort(int[] array)
{
if (array != null)
{
for (int i = 0; i < array.Length; i++)
{
for (int j = 1; j < array.Length - i; j++)
{
Swap(ref array[j - 1], ref array[j]);
}
}
}
return array;
}
public static void Swap(ref int int1, ref int int2)
{
if (int1 > int2)
{
int temp = int1;
int1 = int2;
int2 = temp;
}
}
}
插入排序C#实现:
///
/// 插入排序
///
public class InsertSort : ISort
{
public int[] Sort(int[] array)
{
if (array != null)
{
int k = 1;//使用k变量,后面更好的扩展到Shell排序
for (int i = k; i < array.Length; i++)
{
int current = array[i];
int preIndex = i - k;
while (preIndex >= 0 && preIndex < array.Length && current < array[preIndex])
{
array[preIndex + k] = array[preIndex];
preIndex = preIndex - k;
}
array[preIndex + k] = current;
}
}
return array;
}
}
Shell排序C#实现:
///
/// shell排序
///
public class ShellSort : ISort
{
public int[] Sort(int[] array)
{
if (array != null)
{
int[] list = { 9, 5, 3, 2, 1 };
foreach (int k in list)
{
for (int i = k; i < array.Length; i++)
{
int current = array[i];
int preIndex = i - k;
while (preIndex >= 0 && preIndex < array.Length && current < array[preIndex])
{
array[preIndex + k] = array[preIndex];
preIndex = preIndex - k;
}
array[preIndex + k] = current;
}
}
}
return array;
}
}
- shell排序
- shell排序
- SHELL排序
- Shell排序
- shell排序
- shell排序
- Shell 排序
- Shell排序
- Shell排序
- Shell排序
- shell 排序
- shell排序
- shell排序
- Shell排序
- Shell排序
- Shell排序
- Shell排序
- shell排序
- C++学习第四天
- 判断有向图是否有环 、环的个数以及环中元素
- ZF2教程 - 委托器的使用
- 一些常用的正则匹配规则
- android中发送短信的三种方法
- Shell排序
- 完美软件开发:方法与逻辑
- Codeforces 431 D. Random Task
- AOJ 2084 Hit and Blow
- 当随机不够随机:一个在线扑克游戏的教训
- 创建JavaScript自定义对象的方式
- 现场故障小结——非当前日志组损坏情况
- andorid 调用自己写的WebService
- ArrayList源码阅读笔记