冒泡,简单选择,直接插入排序(Java版)
2015-07-26 20:51
691 查看
冒泡,简单选择,直接插入这三种排序都是简单排序。
工具类
package Utils; import java.util.Arrays; public class SortUtils { public static void swap(int[] a,int i,int j){ int temp = a[i]; a[i] = a[j]; a[j] = temp; } public static void printString(int[] a){ System.out.println(Arrays.toString(a)); } }
冒泡排序
package BubbleSort; import java.util.Arrays; import Utils.SortUtils; public class Demo02 { public static void bubbleSort(int[] a){ int len = a.length; boolean flag = true; for(int i=0; i<len-1 && flag; i++){ flag = false;//假设无须交换 for(int j=0; j< len-1-i; j++) { if(a[j+1]<a[j]){ flag = true;//交换了 SortUtils.swap(a,j+1,j); } } } } public static void main(String[] args) { int[] a = {2,3,5,4,1,6,9,8,7}; bubbleSort(a); SortUtils.printString(a); } }
简单选择排序
package SimpleSort; import java.util.Arrays; import Utils.SortUtils; public class Demo { public static void simpleSort(int[] arr){ int min; for (int i = 0; i < arr.length; i++) { min = i;//假设第一个数据为最小的数据 for (int j = i+1; j < arr.length; j++) { if(arr[min]>arr[j]){ min = j; } } if(i!=min){ SortUtils.swap(arr, min, i); } } } public static void main(String[] args) { int[] a = {2,3,5,4,1,6,9,8,7}; simpleSort(a); SortUtils.printString(a); } }
直接插入排序
package InsertSort; import Utils.SortUtils; public class Demo { public static void insertSort(int[] a){ int temp,j; for (int i = 0; i < a.length-1; i++) { if(a[i]>a[i+1]){//后一个数据小于前一个数据 temp = a[i+1];//放入缓存区 for (j = i; j>=0&&a[j]>temp; j--) { a[j+1] = a[j];//往后移动 } //因为前面减一之后做的判断,所以这里加一 a[j+1] = temp; } } } public static void main(String[] args) { int[] a = {2,3,5,4,1,6,9,8,7}; insertSort(a); SortUtils.printString(a); } }
比较三种排序
相关文章推荐
- java 获取局域网中的所有主机名和IP地址
- JDK 8 中Interface新增的default方法和static方法的区别和使用
- Java读写文件中文乱码问题折腾一个周末重要解决
- Java小日历
- Spring @Transactional ——事务回滚
- Java 设计模式—装饰者模式
- java socket编程
- Java设计模式偷跑系列(21)建模和实现享受metapatterns
- Java 中使用 Calendar 类得到输入日期所在月的最后一天
- java实现将资源文件转化成sql语句导入数据库
- Java多线程-工具篇-BlockingQueue
- Java原生多线程并发方法归纳
- 按键事件在java framework中的流程
- Java对话框总结
- 找出java代码中占用cpu过多问题
- Java多线程的~~~Lock接口和ReentrantLock使用
- java多线程并发——Exchanger 两个任务之间交换对象
- java 获取泛型的类型
- cmd运行记事本所编java的步骤,以及找不到或无法加载主类的解决办法
- JVM java 监控工具-命令行