Thinking in Insert Sort(插入排序)
2011-09-29 20:44
225 查看
今天重新开始阅读《算法导论》,之前虽然读过一遍,但是不是非常的深入,这是一个新的开始,希望在新的一次算法旅程中,收获更多心得!
首先我想说一下我对 插入排序 的理解,我对这个算法的分析与理解,总是在大脑中结合着衣服扑克牌,在算法的步骤中,实时滴更随着每一步操作,当需要排序或者调整某些牌的位置时,我会在头脑中做出调整,然后一步一步,最终达到自已预想和算法正确结果所预想的结果。
算法实施的必要条件:
1.输入:N个数(a1,a2,a3....an);
2.输出:输入序列的一个排列(重新排序):(a1',a2',a3'....an'),使得a1'<=a2'<=a3'<=.....<=an'。
算法设计实现:
insert_sort----------------------->
for j <-----2 to length[a]
{
do key <----- a[j];
i=j-1;
while( i>0 && a[i]>key)
{
do a[i+1] <-----a[i];
i =i -1;
}
a[i+1]=key;
}
之前一直在想一个问题,其实对于即时输入的排序,我们是可以对插入排序做出优化的。
因为传统的插入排序在排序过程中对元素进行移动或者重新复制,这就增加了算法的操作时间,而且复制操作会对内存做一定操作,这些操作是非常耗费资源的。
所以,我在想,我们可以用链表设计实现这个范例,当有新元素需要排序插入时,我们就申请一个Node,然后对之前排序的队列遍历比较,找到适当位置,直接插入就行。而且再输入元素的过程中就实现了排序,当最后一个元素输入后,找到合适位置即可,这事得出的队列就是排序好的对列,相对于输入完后在排序有一定优势。而且在待排序数据量不确定的情况下,此方法还是有很多好处的。
首先我想说一下我对 插入排序 的理解,我对这个算法的分析与理解,总是在大脑中结合着衣服扑克牌,在算法的步骤中,实时滴更随着每一步操作,当需要排序或者调整某些牌的位置时,我会在头脑中做出调整,然后一步一步,最终达到自已预想和算法正确结果所预想的结果。
算法实施的必要条件:
1.输入:N个数(a1,a2,a3....an);
2.输出:输入序列的一个排列(重新排序):(a1',a2',a3'....an'),使得a1'<=a2'<=a3'<=.....<=an'。
算法设计实现:
insert_sort----------------------->
for j <-----2 to length[a]
{
do key <----- a[j];
i=j-1;
while( i>0 && a[i]>key)
{
do a[i+1] <-----a[i];
i =i -1;
}
a[i+1]=key;
}
之前一直在想一个问题,其实对于即时输入的排序,我们是可以对插入排序做出优化的。
因为传统的插入排序在排序过程中对元素进行移动或者重新复制,这就增加了算法的操作时间,而且复制操作会对内存做一定操作,这些操作是非常耗费资源的。
所以,我在想,我们可以用链表设计实现这个范例,当有新元素需要排序插入时,我们就申请一个Node,然后对之前排序的队列遍历比较,找到适当位置,直接插入就行。而且再输入元素的过程中就实现了排序,当最后一个元素输入后,找到合适位置即可,这事得出的队列就是排序好的对列,相对于输入完后在排序有一定优势。而且在待排序数据量不确定的情况下,此方法还是有很多好处的。
相关文章推荐
- 插入排序(insert sort)
- 插入排序(InsertSort)
- In-Place Merge Sort(这个描述实在太简单了,我一下子就明白了!不过这算MergeSort吗?算插入排序还差不多)
- scala 实习插入排序(Insert_sort)
- [排序] 插入排序(Insert Sort)
- 插入排序(I)Insert Sort
- Insert_sort 插入排序
- Insert Sort & Shell Sort(插入排序和希尔排序)
- 分治法排序 Thinking in MergeSort
- 排序1+2:交换排序(ExchangeSort),选择排序(SelectSort)和插入排序(Insertsort)
- 插入排序(InsertSort)
- 一 插入排序(insertsort和shellsort)
- 插入排序 (Insert Sort)
- 插入排序(insertSort)
- InsertSort(插入排序)
- (直接)插入排序(Insert Sort)
- 插入排序(InsertSort)
- 插入排序 insert_sort
- 插入排序(Insert_Sort)
- 一天一排序之“插入排序(insertSort)”