C#实现插入排序
2014-03-10 12:40
267 查看
感谢morewindows的文章,造福我等学渣啊 http://blog.csdn.net/morewindows/article/details/6665714
复杂度应该也是O(n^2)
复杂度应该也是O(n^2)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 排序 { class InsertSort1 { public void ISort1(ref int[]a,int n) //n就是a.length { int i, j, k; for ( i = 1; i < n;i++ ) { //向有序数组a[0]-a[i-1]中插入a[i] for( j=i-1;j>=0;j--) { if (a[j] < a[i]) break; } if(j!=(i-1)) { //如果应该放入的位置不在当前数组的结尾,就要将a[i]大的数依次向后挪 int t = a[i]; for(k=i;k>j+1;k--) { a[k] = a[k - 1]; } //将待插入的a[i]放入数组合适的位置,注意这里不能是a[j]=t,因为j可能已经是-1; a[k] = t; } } } } }
//插入排序算法2:将数据后移和搜索a[i]的正确位置两步合并 public void ISort2(int[]a,int n) { print(a, n); int i, j; for(i=1;i<n;i++) { if(a[i]<a[i-1]) { int t = a[i]; //将数据后移和搜索a[i]的正确位置两步合并 for(j=i-1;j>=0&&a[j]>t;j--) { a[j + 1] = a[j]; } a[j + 1] = t; } } print(a, n); } //插入排序算法3:用数据交换代替数据后移 public void ISort3(int[]a,int n) { print(a, n); int i, j; for( i=1;i<n;i++) { for(j=i-1;j>=0&&a[j]>a[j+1];j--) { swap(ref a[j], ref a[j + 1]); } } print(a, n); } private void swap(ref int a,ref int b) { int t = a; a = b; b = t; }
相关文章推荐
- 减治法:C#实现插入排序
- C#实现冒泡排序与插入排序
- C#实现所有经典排序算法(选择排序,冒泡排序,快速排序,插入排序,希尔排序)
- c#实现插入排序
- 冒泡排序与插入排序(C#实现)
- C#实现插入排序
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- c#之插入排序的实现
- 排序之----插入排序(C#实现)
- 排序算法集合(2)-C#实现的插入排序
- 排序算法--插入排序(Insertion Sort)_C#程序实现
- C#实现插入排序
- Socket 之 UDP 协议通信-c#实现
- C#实现的18位身份证格式验证算法
- C#实现二叉树,外带中序遍历
- c#的listview实现分页效果
- Http请求之--C#的HttpWebRequest实现POST方式请求
- 如何在C#中实现图片缩放
- 用C# 实现C/S模式下软件自动在线升级