java基础----算法
来源:互联网 发布:高音 知乎 编辑:程序博客网 时间:2024/06/05 18:50
算法
- 冒泡排序:从第一个数开始,比较相邻两个数的大小,如果前>后,交换位置,一轮结束后可以确定最后那个数是最大值,第二轮不管第一轮的最大值,再从第一个数开始比较相邻两数,比较到第一轮最大值前面结束,此时确定倒数第二个数在第二最大值,如此循环,每轮过后轮次+1,随着轮次增加每轮比较的次数下降
public void sort(int[] c){ for(int i=0;i<c.length-1;i++){//比较的轮数 for(int j=0;j<c.length-1-i;j++){//每轮比较的次数 if(c[j]>c[j+1]){ int temp = c[j+1]; c[j+1] = c[j]; c[j] = temp; } } }}
- 选择排序:第一轮:从第一个数开始,第二个数直到最后一个数都和第一个数比较,比第一个数就交换位置,一轮过后第一个数为最小值;第二轮:从第二个数开始,第三个数直到最后一个数都和第二个数比较,。。。。这样每轮都能确定!这轮!最前面的数是最小的。如此循环
public void sort(int[] c){ for(int i=0;i<c.length-1;i++){//比较的轮数,c[i]表示为这轮的目标,后面的数都和从c[i]比较 for(int j=i+1;j<c.length;j++){ if(c[i]>c[j]){ int temp = c[j]; c[j] = c[i]; c[i] = temp; } } } }
- 快速排序:递归思想,选第一个数为基准值,开始索引坐标start=0,end=length-1;基准值一直不变
- 第一次从最后往前每个数都和基准值比较,基准值大,交换位置,end坐标发生变化
- 第二次从最前往后每个数都和基准值比较,基准值小,交换位置,start坐标发生变化
- 重复上面两个步骤,直到start>=end,此时以基准值为中心,左边序列都比基准值小,右边序列都比基准值大,对左右两边序列进行递归
public void sort(int c[], int start, int end) { int i, j; i = start; j = end; if ((c == null) || (c.length == 0)) return; while (i < j) {//查找基准点下标 while (i < j && c[i] <= c[j]) // 以数组start下标的数据为key,右侧扫描 j--; if (i < j) { // 右侧扫描,找出第一个比key小的,交换位置 int temp = c[i]; c[i] = c[j]; c[j] = temp; } while (i < j && c[i] < c[j]) // 左侧扫描(此时c[j]中存储着key值) i++; if (i < j) { // 找出第一个比key大的,交换位置 int temp = c[i]; c[i] = c[j]; c[j] = temp; } } if (i - start > 1) { // 递归调用,把key前面的完成排序 quickSort(c, 0, i - 1); } if (end - j > 1) { quickSort(c, j + 1, end); // 递归调用,把key后面的完成排序 } }
0 0
- java算法:算法基础
- Java算法基础-逆序算法
- java基础算法
- Java 算法基础 -递归
- JAVA一些基础算法
- JAVA基础算法实现
- Java基础-排序算法
- Java基础--递归算法
- java 算法基础
- java基础----算法
- Java基础算法
- Java算法基础
- java基础总结--约瑟夫算法
- java基础学习--排序算法
- Java基础_递归算法
- java基础之基本算法
- Java算法基础----数据结构基本概念
- java八大基础排序算法
- linux高级命令
- 【OpenCV学习笔记】二十四、轮廓查找与绘制(一)
- TabLayout的ViewPager中的Fragment点击刷新的问题
- 队内训练赛一
- LeetCode : Factorial Trailing Zeroes
- java基础----算法
- 如何把vim中的内容粘贴到外部
- Unity开发笔记整理
- java动态代理
- Log4j配置详解
- 链表求和
- 彻底搞定Android开发中软键盘的常见问题
- 微信小程序开发:提高应用速度小技巧
- 「这个控件叫什么」系列之加载占位图+页面指示器