数据查找算法总结1
来源:互联网 发布:女生湿 知乎 编辑:程序博客网 时间:2024/06/04 20:13
1.二分法查找
介绍:前提是当前要查询的数组的有顺序的。根据值得对比,逐步成半的缩小范围。
public int binarySearch(long[]arr,long value) { int min = 0; int max = elements; int mid = 0; while (true) { mid = (min + max) / 2; if(arr[mid] > value){ // 左移 max = mid; }else if(arr[mid] < value){ // 右移 min = mid; }else{ return mid; } if(min > max){ // 到头了 return -1; } }}
2. 冒泡排序
介绍:从第一位开始以此确定每个位置上的正确数,
最坏的情况下时间复杂度为 n * (n - 1) / 2,即 O(n^2):
/** * 冒泡排序(由小到大) */public static void bubbleSort(long[] arr) { long temp = 0; for (int i = 0; i < arr.length - 1; i++) { for (int j = i+ 1; j <arr.length ; j++) { if (arr[j] < arr[i]) { temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } }}
3.插入排序
原理:假设第一个元素被放到了正确的位置上,假设第二个、第三个、第四个。。。。
/** * 插入排序, * @param arr */ public static void sort(int [] arr){ int temp = 0 ; for(int i = 1;i <arr.length; i++ ){ temp = arr[i]; int j = i; while(j> 0 && temp > arr[j - 1] ){ arr[j] = arr[j - 1]; j--; } arr[j] = temp; } }
4. 希尔排序
原理: 在插入排序的基础上增大间隔。假设前h 个是对的。
h的计算方式为:
int h = 1;
while(h > arr.length/3){
h = h* 3 +1;
}
图解:
/** * 希尔排序 * @param arr */public static void sortByxier (int [] arr){ int h = 1; while(h > arr.length /3){ h = h * 3 + 1; } /*控制h , h> 0 */ while(h> 0 ){ int temp = 0; for(int i = h;i < arr.length;i ++ ){ temp = arr[i]; int j = i; while(j> h-1 && temp < arr[j - h ]){ arr[j] = arr[j- h]; j = j-h ; } arr[j] = temp; } h = (h-1)/3; }}
阅读全文
0 0
- 数据查找算法总结1
- 查找算法总结(1)
- 查找算法总结(1)--概括
- 查找算法总结
- 查找算法总结
- 查找算法总结
- 查找算法的总结
- 查找算法总结
- 查找算法总结
- 查找算法总结
- 查找算法总结
- 查找算法总结
- 各类查找算法总结
- 查找算法总结
- 查找算法总结
- 常见查找算法总结
- 查找算法总结
- 查找算法数据结构总结
- 关于 JOptionpane的一些操作例子
- 微信小程序开发-图片(媒体)
- 【量化小讲堂-Python&Pandas系列06】历史数据告诉你:KDJ指标选股有效吗?
- 软件架构师知识点3
- python pass continue
- 数据查找算法总结1
- python 解决中文乱码问题('ascii' codec can't encode characters in )
- Mybatis学习笔记(十四)【延迟加载】
- Ubuntu SMP 16.04.1 个人配置习惯
- leetcode习题解答:6. ZigZag Conversion
- 判断32位整数二进制中1的个数的算法
- spring AOP 领悟
- A NEW DAY
- lintCode627:最长回文串