java 二分法插入排序

zhouyusunquan 2015-10-04 04:14:27
public class Effpx {

public static void Sort(int[] objs){
System.out.println("排序之前:");
for (int i = 0; i < objs.length; i++) {
System.out.print(objs[i]+" ");
}
System.out.println("");
for(int i=1;i<objs.length;i++){
int first=0;
int last=i;
int mid=0;
int key=objs[i];
while(first<last){
mid =(first + last)/2;
if(objs[mid]<objs[i]){
first=mid+1;
}else if(objs[mid]>objs[i]){
last=mid-1;
}
}
System.out.println("mid:"+mid);

if(objs[mid]>objs[i]){
for (int j = i; j>mid&&j>=1; j--) {// 复杂度,最差情况:(n-1)+(n-2)+...+n/2=O(n^2)
objs[j]=objs[j-1];
}
objs[mid]=key;
}

System.out.println("排序之后:");
for (int k = 0; k < objs.length; k++) {
System.out.print(objs[k]+" ");
}
System.out.println("");
}
// System.out.println("");
// System.out.println("排序之后:");
// for (int i = 0; i < objs.length; i++) {
// System.out.print(objs[i]+" ");
// }
}
public static void main(String args[]){
// int[] a={49,38,65,97,76,13,27,78,34,12,64,1};
int[] a={49,38,65,97,76,13,27,78,34,12};
Effpx.Sort(a);
}

}

排序之后:
13 12 27 34 38 49 65 76 78 97
得到的结果是不对的,请帮忙
...全文
135 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
RuiyuanZHOU 2015-10-04
  • 打赏
  • 举报
回复
public static void Sort(int[] objs) { for (int k = 0; k < objs.length; k++) { System.out.print(objs[k] + " "); } System.out.println(" "); for (int i = 1; i < objs.length; i++) { int first = 0; int last = i-1; int mid = 0; int key = objs[i]; while (first <= last) { mid = (first + last) / 2; if (objs[mid] < objs[i]) { first = mid + 1; } else if (objs[mid] > objs[i]) { last = mid - 1; } } for (int j = i-1; j >= first; j--) { objs[j + 1] = objs[j]; } if (first != i) objs[first] = key; System.out.println(""); for (int k = 0; k < objs.length; k++) { System.out.print(objs[k] + " "); } } }
RuiyuanZHOU 2015-10-04
  • 打赏
  • 举报
回复
public static void Sort(int[] objs) { for(int i=1,j;i<objs.length;i++) { int tmp = objs[i]; for(j=i;j>0&&tmp<objs[j-1];j--) { objs[j] = objs[j-1]; } objs[j]=tmp; } }
鸣鸣Amadues 2015-10-04
  • 打赏
  • 举报
回复
算法懒得看了,不过就是说一句,实际项目里排序都是直接调方法的,没必要自己写算法。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧