java插入排序Insertsort实例
//直接插入排序
voidDirectInsertionSort(int*arr,intnLen)
{
inti,j;
for(i=1;i<nLen;i++)
{
inttemp=arr[i];
for(j=i-1;j>=0;j--)
{
if(temp<arr[j])
arr[j+1]=arr[j];
else
break;
}
if(j+1!=i)
arr[j+1]=temp; //注意这里是j+1
}
}
//折半插入排序
voidBinaryInsertionSort(int*arr,intnLen)
{
inti,j;
intlow,mid,high;
for(i=1;i<nLen;i++)
{
inttemp=arr[i];
if(temp<arr[i-1])//这个判断可不要
{
low=0;
high=i-1;
while(low<=high)//error:while(low<high)注意这里还需要等号
{
mid=(low+high)/2;
if(temp<arr[mid])
high=mid-1;
else
low=mid+1;
}
//经过上面的折半查找插入位置后,这时插入位置为low或者high+1,这时low等于high+1
//for(j=i-1;j>=high+1;j--)
//{
// arr[j+1]=arr[j];
//}
//arr[high+1]=temp;
for(j=i-1;j>=low;j--)
{
arr[j+1]=arr[j];
}
arr[low]=temp;
}
}
}
相关文章
- java数据类型及关键字
- java字符串的拆分_Java中的字符串分割 .
- java calendar计算时间差_Java Calendar 计算时间差
- 编写java判断闰年_用Java程序判断是否是闰年的简单实例[通俗易懂]
- java运行环境_如何搭建Java运行环境?
- java启动器_JAVA基础:Java 启动器如何查找类
- java中scanner是什么意思_java中scanner是什么
- md5 java 实现_MD5加密的Java实现
- java控制台输入数组_Java控制台输入数组并逆序输出的方法实例
- java后台怎么解密md5,Java md5 密码加解密
- JAVA string转map_java怎么转业务
- Java int 与 Integer 区别
- JAVA高级工程师课程笔记整理——(一)初识JAVA详解编程语言
- Java经典实例:比较浮点数详解编程语言
- Java连接Mysql:探索数据库之路。(java链接mysql)
- 处理使用Java操作Redis实现过期处理(redisjava过期)
- 处理Java 环境下 Redis 过期数据处理策略(redisjava过期)
- 时间处理Java中Redis过期时间的处理(redisjava过期)
- 面试前准备:Java技术和Redis快速入门(java面试redis)
- 深入学习:Linux下Java环境建设与配置(linux下java环境)
- Java调用Linux库实现跨系统功能(java调用linux库)
- Java Redis实例学习与应用(java redis实例)
- 使用Java语言写Redis实现一个分布式缓存系统(用java写个redis)
- JAVA算法起步之插入排序实例