黑马程序员之数据结构学习笔记:插入排序
2012-12-15 19:49
381 查看
---------------------------------------
2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!----------------------------
插入排序思想:
插入排序是假设一个数组中的前一段(或者后一段)已经排好序,而将剩下的元素分别插入到合适的位置上,以达到排序目的的一种算法
以下是实现代码,对红色部分有不同的实现方法:
/// <summary>
/// 插入排序
/// </summary>
/// <param name="arr">要排序的数组</param>
static void InsertSort1( ref int[] arr)
{
int keyValue = 0;
int pos = 0;
for (int key = 1; key < arr.Length;key++ )
{
keyValue = arr[key];
pos = key - 1;
while (pos >= 0 && arr[pos] > keyValue)
{
arr[pos + 1] = arr[pos];
pos--;
}
arr[pos + 1] = keyValue;
}
}
/// <summary>
/// 插入排序
/// </summary>
/// <param name="arr">要排序的数组</param>
static void InsertSort2(ref int[] arr)
{
int key;
for (int i = 1; i < arr.Length;i++ )
{
key = i - 1;
while(key >=0 && arr[key] > arr[key+1])
{
Swap(ref arr[key], ref arr[key + 1]);
key --;
}
}
}
/// <summary>
/// 交换两个数的值
/// </summary>
/// <param name="i">左值</param>
/// <param name="j">右值</param>
static void Swap(ref int i,ref int j)
{
int temp = i;
i = j;
j = temp;
}
---------------------------------------------------
2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------
2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!----------------------------
插入排序思想:
插入排序是假设一个数组中的前一段(或者后一段)已经排好序,而将剩下的元素分别插入到合适的位置上,以达到排序目的的一种算法
以下是实现代码,对红色部分有不同的实现方法:
/// <summary>
/// 插入排序
/// </summary>
/// <param name="arr">要排序的数组</param>
static void InsertSort1( ref int[] arr)
{
int keyValue = 0;
int pos = 0;
for (int key = 1; key < arr.Length;key++ )
{
keyValue = arr[key];
pos = key - 1;
while (pos >= 0 && arr[pos] > keyValue)
{
arr[pos + 1] = arr[pos];
pos--;
}
arr[pos + 1] = keyValue;
}
}
/// <summary>
/// 插入排序
/// </summary>
/// <param name="arr">要排序的数组</param>
static void InsertSort2(ref int[] arr)
{
int key;
for (int i = 1; i < arr.Length;i++ )
{
key = i - 1;
while(key >=0 && arr[key] > arr[key+1])
{
Swap(ref arr[key], ref arr[key + 1]);
key --;
}
}
}
/// <summary>
/// 交换两个数的值
/// </summary>
/// <param name="i">左值</param>
/// <param name="j">右值</param>
static void Swap(ref int i,ref int j)
{
int temp = i;
i = j;
j = temp;
}
---------------------------------------------------
2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------
相关文章推荐
- 黑马程序员之数据结构学习笔记:快速排序
- 数据结构 学习笔记(十):排序(上):简单排序(冒泡,插入),希尔 / 选择 / 堆 / 归并 排序
- 数据结构学习笔记排序 (冒泡、插入、希尔、堆排序、归并排序)
- 算法导论学习笔记(1)插入排序
- 【数据结构----笔记3】插入排序算法之【直接插入排序】
- python数据结构学习笔记-2016-10-24-01-排序列表
- 数据结构 学习笔记(十一):排序(下):快速 / 表 / 桶 / 基数 排序,排序算法的比较
- 和小强一起学习数据结构java版之直接插入排序
- 【黑马程序员-学习笔记】数据结构-概念
- 黑马程序员-C#冒泡排序-学习笔记
- python数据结构学习笔记-2016-10-28-01-带尾指针的链表和排序链表
- python数据结构学习笔记-2016-10-23-02-排序
- 【数据结构学习笔记】——排序
- 数据结构学习笔记5-寻找最小的k个数(选择排序和堆排序)
- 学习笔记-直接插入排序 15/01/05
- 算法学习笔记二:插入排序及循环不变式
- 小蚂蚁学习数据结构(35)——直接插入排序
- 黑马程序员—Java基础学习笔记之排序算法:选择排序&冒泡排序
- 算法导论学习笔记(一):插入排序
- 黑马程序员--学习笔记-- Java中常见的数组排序方式(一)