学习笔记--排序、进制转换
2013-11-05 13:45
232 查看
摘要
数组和基本数据类型的内容比较简单不做详细的记录,但是在讲解他们的过程中涉及到的排序和进制转换、拆半查找比较难所以做特别的笔记1.排序
i.选择排序思想:在数组中选择出最大的值放在第一位,然后在剩下的之中查找最大的放在剩下数据的第一位,直到剩下的数据为空。
实现代码如下:
public static void sort(int[] x){ for(int i = 0;i<x.length;i++){ for(int y = i+1;y<x.length;y++){ if(x[i]<x[y]){ int temp = x[y]; x[y] = x[i]; x[i] = temp; } } } }
ii.冒泡排序
思想:从数组的第二个开始如果这个数比前面的值大就向前移动直到无法移动,直到所有的数都无法移动。
实现代码如下:
public static void sort(int[] x){ for(int i = 1;i<x.length;i++){ int y = i-1; int pos = i; for(;y>=0;y--){ if(x[pos]>x[y]){ int temp = x[pos]; x[pos] = x[y]; x[y] = temp; pos = y; }else{ break; } } } }
iii.快速排序
思想:选取第一个值作为关键字,从末尾开始查找第一个小于它的值,然后再从开头查找第一个大于它的值,然后进行交换,直到,所有数据完成排序。
注意:这种排序是不稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动
实现代码如下:
public static void quickSort(int[] x,int start,int end){ if(start>=end){ return; }else{ int pos = getPost(x, start, end); if(pos>start){ int temp = x[pos]; x[pos]=x[start]; x[start] = temp; } quickSort(x,start,pos-1); quickSort(x, pos+1, end); } } private static int getPost(int[] x, int start, int end) { int l1 = end; int l2 = start+1; while(l1>=l2){ for(;l1>=l2;l1--){ if(x[l1]>x[start]){ break; } } for(;l2<=l1;l2++){ if(x[l2]<x[start]){ break; } } if(l1>l2){ int temp = x[l1]; x[l1] = x[l2]; x[l2] = temp; } } return l1; }
2.进制转换
我们知道计算机当中采用二进制进行数据表示,为了简化表示我们有使用八进制和十六进制,八进制用3位二进制表示一位,十六进制用4位表示一位。将十进制转化成对应的进制的时候算法基本一致只是移动的位数和取余数的位数不同而已,所以我们可以进行代码优化,优化后代码如下:(int num,int offeset){ if(num ==0){ return "0"; }else{ char[] table = new char[]{'0','1','2','3', '4','5','6','7', '8','9','A','B', 'C','D','E','F'}; StringBuilder sb = new StringBuilder(); int yu = (int) Math.pow(2,offeset )-1; while(num!=0){ sb.append(table[num&yu]); num = num>>offeset; } return sb.reverse().toString(); } }
进制转换如下:
public static String [code]trains(100,1);//二进制 trains(100,3);//八进制 trains(100,4);//十六进制
总结
上述所说的内容在实际的开发中很少用到,但是通过理解这些内容,有利于扩展思维,能提高分析能力。相关文章推荐
- 【Java 学习笔记】 TreeMap排序,Comparator的定义
- Java版 选择排序 -Java 学习笔记 (20)
- java学习笔记之对象的排序
- 学习笔记 I——排序
- 经典排序算法学习笔记五——直接选择排序
- 数据结构学习笔记 --- 排序(冒泡排序、快速排序)
- 【Java学习笔记】进制转换
- 深层次两张图解经典6大排序与6大基础数据结构——学完这些,妈妈再也不用担心我的排序算法与数据结构,学习笔记大放送
- Scala学习笔记(六)----数组,循环,排序
- 学习笔记-直接插入排序 15/01/05
- iOS学习笔记之字典排序
- 百度IFE学习笔记(一)js二维数组排序
- 算法学习笔记之排序--基于值的插入排序
- [学习笔记]排序算法之 二分法查找
- 8大内部排序算法学习笔记--(2)快速排序 Java实现
- 学习笔记--- 比较排序之堆排序
- python数据结构学习笔记-2016-11-26-01-链表排序
- 安卓学习笔记---对List集合进行排序(正序或者倒叙)
- 学习笔记:快速排序的C++、JavaScript(2种方法)、Java实现
- Collections.sort(List list) list排序学习笔记