常见排序算法Java小结
来源:互联网 发布:养老统筹怎么算法 编辑:程序博客网 时间:2024/05/16 01:08
原想将一些常见排序算法做个小的Android demo,以供偶尔查看,后来发觉不太必要,故只记录一些核心算法,以便查找。ps:此处均默认排序从小到大,序列不为空。
1、选择排序
//1 选择排序 public void select(int [] nums){ int size = nums.length; int temp; int k; for (int i = 0;i < size - 1;i++){ k = 0; for ( int j = 1 ; j < size - 1 -i ;j++){ if (nums[j] > nums[k] ){ k = j; } } temp = nums[size - 1 -i]; nums[size - 1 -i] = nums[k]; nums[k] = temp; } }
2、冒泡排序
//2 冒泡排序 public void bubble(int [] nums){ int size = nums.length; int temp; for (int i = 0;i< size - 1;i++){ for (int j = 0 ; j < size - 1 - i ;j++){ if (nums[j] > nums [j + 1]){ temp = nums[j+1]; nums[j+1] = nums[j]; nums[j] = temp; } } } }
3、直接插入排序
//3 插入排序 public void insert(int [] nums){ int size = nums.length; int temp; int j ; for (int i = 0;i<size ;i++){ temp = nums[i]; for ( j = i; j > 0 && nums[j - 1] >temp ; j--){ nums[j] = nums[j-1]; } nums[j] = temp; } }
4、希尔排序
//4 希尔排序 public void shell(int[] nums){ int size = nums.length; int temp; int j; for (int dicrement = size/2 ;dicrement > 0 ; dicrement /= 2){ for (int i = dicrement;i < size ;i++){ temp = nums[dicrement]; for ( j = i ; j >= dicrement;j -= dicrement){ if (nums[j - dicrement] > temp){ nums[j] = nums[j - dicrement]; }else { break; } } nums[j] = temp; } } }
5、快速排序
//5 快速排序 public int getMiddle(int []nums , int low , int high){ int temp = nums[low]; while (low < high){ while (low<high && nums[high] > temp ){ high--; } nums[low] = nums[high]; while (low<high && nums[low] < temp) { low ++; } nums[high] = nums[low]; } nums[low] = temp; return low; } public void quick(int []nums , int low , int high){ if (low < high){ int middle = getMiddle(nums,low,high); quick(nums,low,middle-1); quick(nums,middle+1,high); } } public void sort(int []nums){ if (nums.length > 0){ quick(nums,0,nums.length - 1); } }
在此补充一个二分查找算法,二分查找法前提序列有序,折半查找
public int binary(int [] nums,int x){ int low = 0; int high = nums.length - 1; while (low <= high){ int middle = (low + high)/2 ; if (x == nums[middle]) return middle; else if (x > nums[middle]) low = middle+ 1; else high = middle - 1; } return -1; }
0 0
- 常见排序算法Java小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- 常见排序算法小结
- Android开发 json解析之 -- json数组字符串
- ThinkPHP html模板中截取字符串 中文字符串
- Intellij Idea 创建Web项目入门(一)
- Python 线程、进程、协程
- Android中 要把一部分组件 在application中初使化
- 常见排序算法Java小结
- 休闲时光小代码----用CSS制作圣诞树
- 在github上搭建ssm项目,记录轻笔记项目的完成进度
- iOS开发之用block来实现UIAlertView点击事件的代理方法
- 数字时钟
- 页面资源的导入与配置
- 使用SSM框架搭建Web服务器实现登录功能(Spring+SpringMVC+Mybatis)
- Adapter of page viewer (how to reuse view)
- ssm中登录功能的实现以及页面跳转