- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java排序与搜索
Java排序与搜索
最近,利用闲暇时间用java写了一些排序和搜索的算法,算是对这两种算法的简单封装吧!也算是一个小总结吧!同时,我简单的加了注释以加强算法的可读性!
/**
* 本类封装了对数组排序和搜索的各种操作
* 时间复杂度高低不等
* 所有方法都是对int型数据进行操作的,其他数据 类型类似
*/
public class SortAndSearch {
public static void main(String[] args) {
int[] arr = {3, 2, 2, 3, 4, 3, 1, 10, 22, 12, 1, 111, 21, 222, 43};
// int[] arr = {2, 1};
System.out.print(排序前:);
for(int i=0; iarr.length; i++){
System.out.print(arr[i]+ );
}
System.out.println();
//bubbleSort(arr);
//selectSort(arr);
//rankSort(arr);
//jiOuSort(arr);
mergeSort(arr, 0, arr.length-1);
//insertSort(arr);
System.out.print(排序后:);
for(int i=0; iarr.length; i++){
System.out.print(arr[i]+ );
}
System.out.println();
System.out.println(数组arr中是否含有111: + binarySearch(arr, 111));
System.out.println(数组arr中是否含有100: + binarySearch(arr, 100));
}
/* 及时终止型的冒泡排序 */
public static void bubbleSort(int[] arr){
int n = arr.length;
boolean swaped = false;
for(int i=1;in; i++){//每次循环就会将最小的浮到最前面,这才是冒泡
swaped = false;//每次循环开始时重置
for(int j=n-1; j=i; j--){//每次循环都会冒出一个最小的,所以j=i
if(arr[j] arr[j-1]){//发现有大的就交换
swap(arr, j, j-1);
swaped = true;
}
}
if(!swaped) break;//如果没有发生交换,说明已经排好了,不用再继续往下做了
}
}
/* 奇偶排序 */
public static void jiOuSort(int[] arr){
int n = arr.length;
boolean swaped = false;
for(int a=0; an-2; a++){
//构造奇偶交替现象
for(int i=(a%2==0 ? 0 : 1); in-1; ){
if(arr[i] arr[i+1]){
swap(arr, i, i+1);
swaped = true;
}
i +=2;
}
if(!swaped a1){
return;
}
}
}
/* 归并排序 */
public static void mergeSort(int[] arr, int start, int end){
if(start end){
int moddle = (start+end)/2;
mergeSort(arr, start, moddle);
mergeSort(arr, moddle+1, end);
merge(arr, start, moddle, end);
}
}
/* 插入排序 */
public static void insertSort(int[] arr){
int n = arr.length;
for(int i=1; in; i++){
int temp = arr[i];
int j = i;
if(arr[j-1]temp){
while(j=1 arr[j-1]temp){
arr[j] = arr[j-1];
j--;
}
您可能关注的文档
- AFP许明理财规划书.doc
- AITD基因免疫平衡双向整体疗法.doc
- Algebra数据库关系代数教案.ppt
- ai降低烘丝机生产烟丝干头干尾比例.ppt
- AN808P带程序段调节仪.pdf
- Android4.0在笔记本上的安装.pdf
- al降低钢筋对焊不合格品率.ppt
- AODV路由协议RFC3561中文版.pdf.pdf
- ap一烧环冷轴流风机润滑系统改造.ppt
- ARB的使用-2012最新.ppt
- 毕业感谢老师主持词范文.docx
- 医疗与医药行业:医药企业研发创新与知识产权战略规划报告.docx
- 《重症监护病房肠内营养支持对重症患者营养不良的防治策略研究》教学研究课题报告.docx
- 邮轮旅游市场2025年投资前景分析报告:产业政策与市场趋势.docx
- 《职业院校实习实训基地建设现状分析及未来创新路径探讨》教学研究课题报告.docx
- 小学音乐教育中多元化民族音乐文化融入实践教学研究课题报告.docx
- 高中化学课堂中的实验设计与化学反应机理探究教学研究课题报告.docx
- 初中历史教学创新通过仿制明朝科举试卷理解教育制度教学研究课题报告.docx
- 高中语文整本书阅读评价方法创新与实践研究教学研究课题报告.docx
- 2025年合规科技在食品物流行业风险管理中的应用与挑战报告[001].docx
文档评论(0)