简单排序java实现
来源:互联网 发布:金庸小说那本好看知乎 编辑:程序博客网 时间:2024/06/05 14:51
一.冒泡排序:每次遍历比较两个相邻的值,降序互换,依次进行,这样较大的值像气泡一样逐渐浮向顶部。
public class BubbleSort {public static void bubbleSort(int[] list){boolean needNextPass=true;for(int k=1;k<list.length&&needNextPass;k++){//如果某一次遍历没有发生交换则没有必要进行下次遍历needNextPass=false;for(int i=0;i<list.length-k;i++){if(list[i]>list[i+1]){//如果没有发生交换,needNextPass就取不到trueint temp=list[i];list[i]=list[i+1];list[i+1]=temp;needNextPass=true;}}}}public static void main(String[] args) {int[] list={2,9,5,4,8,1};bubbleSort(list);for(int i=0;i<list.length;i++){System.out.print(list[i]+" ");}}}严格说,这属于改进的冒泡排序方法,如果不设needNextPass就是最原始的冒泡排序算法。
二.选择排序:每一次遍历找出剩余数列的最小数,放在剩余数列的最前边,知道排完整个数列。
public class SelectSort {public static void selectSort(int a[]){ int minIndex = 0; int temp = 0; if((a==null)||(a.length==0)) return; for(int i=0; i<a.length; i++){ minIndex = i; //无序区的最小数据数组下标 for(int j=i+1; j<a.length; j++){ //在无序区中找到最小数据并保存其数组下标 if(a[j]<a[minIndex]){ minIndex = j; } } if(minIndex!=i){ //如果不是无序区的最小值位置不是默认的第一个数据,则交换之。 temp = a[i]; a[i] = a[minIndex]; a[minIndex] = temp; } } }public static void main(String[] args) {int[] a={2,9,5,4,8,1,1};selectSort(a);for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}}}
选择排序将交换次数从O(N^2)减少到O(N),不过比较次数任然是O(N^2)。然而选择排序仍然为大记录量的排序完成了重要改进,因为交换需要在内存中移动。
三.插入排序:每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
public class InsertSort {public static void insertSort(int[] a){ if(a!=null){ for(int i=1;i<a.length;i++){ int temp=a[i],j=i; if(a[j-1]>temp){ while(j>=1&&a[j-1]>temp){ a[j]=a[j-1]; j--; } } a[j]=temp; } } else System.out.print("数列为空"); }public static void main(String[] args) {int[] a={2,9,5,4,8,1,1};insertSort(a);for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}}虽然插入排序算法仍然需要O(N^2)的时间,但在一般情况下,它要比冒泡排序快一倍,比选择算法还要快一点。
- 简单排序java实现
- Java实现简单冒泡排序
- Java实现简单选择排序
- 简单插入排序--Java实现
- 简单选择排序--Java实现
- 简单选择排序 java实现
- Java实现简单的排序
- Java实现各种简单排序
- 一些简单排序Java实现
- Java实现简单选择排序
- Java简单实现快速排序
- java实现简单选择排序
- 简单选择排序 java实现
- Java实现简单选择排序
- Java实现简单插入排序
- 【排序算法】简单选择排序(java实现)
- java实现简单排序算法:堆排序
- java实现简单排序算法:快速排序
- 大数水题PAT 1065
- Linux 脚本编写基础
- 由online judge上的Time Limit Exceeded引发的对虚拟内存的思考
- 文本去重-----awk或者uniq
- VS 的makefile工程
- 简单排序java实现
- Hadoop 学习总结之一:HDFS简介
- java 类型通配符 直接源码1
- I2C总线
- WEB-DICT词库计划
- boost序列化多态类指针的例子
- 杭电 畅通工程 1863 (并查集)
- HDU 4493 Tutor (基础题)
- 文件的本质,以及在VC中读写文本文件盒二进制文件的注意事项