算法
MaxLiuZhenGuo
我喜欢简单直白,不冗余繁杂。
展开
-
算法之:二分法
二分法网上有很多资料了,这里盗用一下算法第四版的代码. int lo = 0; int hi = a.length-1; while(lo { int lo = 0; int hi = a.length-1; while(lo { int mid = lo+(hi-lo)/2; if (key else if (key>a[mid]) lo = mid+1; else原创 2017-07-26 11:00:21 · 910 阅读 · 0 评论 -
算法:选择
public static void SelectSort() { int N = 10; int a[] = {2,4,6,5,7,9,8,10,1,3}; int tmp = 0; for(int i=0;i<N;i++) { int min = i; for(int j=i+1;j<N;j++) { if(a[min]>a[j])原创 2017-07-26 14:32:54 · 320 阅读 · 0 评论 -
算法:插入排序
插入排序移动数据找到合适的位置插入,保持右边的部分不变化(这个选择排序相反,选择排序是右边的部分变化左边已排序的部分不变化)。 通过移动和插入实现数据的有序排列。 public static void InsertSort() { int N=10; int a[] = {2,-1,5,4,1,6,8,9,7,0}; int key; int i,j; for(i=1;原创 2017-07-26 15:51:19 · 267 阅读 · 0 评论 -
算法:两种算法相比较(选择和插入排序)
选择排序:保持已排序的部分不变化,这通常是左边的部分,拿一个数据和右边的部分进行比较 经过 N*N/2次的比较和 N-1次的交换。 插入排序:保持未排序的部分不变化,这通常是右边的部分,拿一个数据和左边的进行比较后遇到合适的位置插入,平均 N*N/4的比较和N*N/4次的交换。 选择:当数据中有已经部分排序的数据可以使用插入速度较快。 比较:可以使用随机函数将数据打乱比较一下原创 2017-07-26 16:03:45 · 588 阅读 · 0 评论