![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
乜嘢噢耶
这个作者很懒,什么都没留下…
展开
-
插值查找算法
插值查找算法主要的公式是:mid = left + (key - arr[left]) / (arr[right] - arr[left]) * (right - left);与二分查找算法的公式有所不一样,二分查找算法的公式mid = (left + right) / 2;插值插值算法和二分插值算法比较:在数据分布均匀的情况下,插值插值算法比二分插值算法较好,但是在数据分布不均匀的情...原创 2019-12-13 17:24:18 · 127 阅读 · 0 评论 -
希尔排序算法
对直接插入排序方法的改进,希尔排序是一种不稳定的排序方法。//希尔排序的交换法//每次找打合适的位置就交换位置,缺点是导致算法速度频繁交换,花费了更多的时间public static void shellSort_01(int[] arr){ //临时变量,用于交换 int temp = 0; //两个数之间比较的间隔 for(int gap=arr.length/2;gap&g...原创 2019-12-12 19:43:10 · 86 阅读 · 0 评论 -
直接插入排序算法
直接插入排序算法思路:一个无序数组,首先把第0位当作有序数组,从第1位开始进行比较,找到合适的位置进行插入,在插入完成后,这又是一个有序数组,在从后面的数中跟前面的数进行比较,插入在合适的位置。代码说明://直接插入排序算法public static void insertSort(int[] arr){ //声明插入的数 int insertVal = 0; //声明插入的索引...原创 2019-12-11 20:09:53 · 122 阅读 · 0 评论 -
八皇后算法
//检查八皇后算法中,放置第n个皇后是否和前后的产生冲突public boolean judge(int n){ //跟前面已经放置的相比较 for(int i=0;i<n;i++) { //1、同一列上产生冲突 //2、行差和列差的值相等产生冲突,即在同一斜线上 if(array[i]==array[n]||Math.abs(n-i)==Math.abs(array[...原创 2019-12-07 10:18:21 · 105 阅读 · 0 评论 -
二分查找算法
//非递归的二分查找算法public static int binarySearch(int[] arr,int findVal){ int low = 0; int high = arr.length-1; int mid; //退出循环的条件 //1、找到了查找的数 //2、没有找到,左边的下标(low)索引大于右边下标索引(high) while(low <= hig...原创 2019-12-05 15:47:39 · 75 阅读 · 0 评论 -
基数排序
基数排序算法//空间换时间的算法public static void radixSort(int[] arr){ //1、得到数组的最大位数 int index = 0; int max = arr[0]; for(int i=0;i<arr.length;i++) { if(max < arr[i]) max = arr[i]; } int maxLen...原创 2019-12-01 09:38:33 · 52 阅读 · 0 评论 -
归并排序算法
归并排序两种形式public static void merge(int[] arr,int left,int mid,int right,int[] temp){ int l = left; int r = mid+1; int k=0; //下标索引 //先把左右两边有序的填充到temp数组 //直到有一边完成则退出 while(l<=mid && r&l...原创 2019-11-28 14:28:50 · 64 阅读 · 0 评论 -
快速排序算法两种方式
快速排序算法两种方式// 以中间的数作为中轴值public static void quickSort(int[] arr,int left,int right){ int l = left; int r = right; int pivot= arr[(left + right)/2]; //左边小于右边,则继续循环 while(l < r) { while(arr[...原创 2019-11-26 16:29:53 · 149 阅读 · 0 评论