复习下简单的排序算法,以免忘记,记录如下:
以下是冒泡排序算法实现
package com.cn.main;
//冒泡排序实现public class BubbleSort {
public static void main(String args[]) {
int[] values= {2,3,6,0,5,4,9,7};
sort(values);
for(int i=0;i<values.length;i++) {
System.out.println(values[i]);
}
}
public static void sort(int[] values) {
int temp;
for(int i=0;i<values.length;i++) {
for(int j=0;j<values.length-i-1;j++) {
if(values[j]>values[j+1]) {
temp=values[j];
values[j]=values[j+1];
values[j+1]=temp;
}
}
}
}
}
选择排序实现
public class SelectionSort {
public static void main(String args[]) {
int[] b= {7,2,9,3,8,4,6,1,5};
selectionSort(b);
for(int i:b) {
System.out.println(i);
}
}
public static void selectionSort(int[] a) {
int n=a.length;
for(int i=0;i<n;i++) {
int k=i;
//找出最小值的下标
for(int j=i+1;j<n;j++) {
if(a[j]<a[k]) {
k=j;
}
}
//将最小值置于排序序列尾部
if(k>i) {
int temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
}
直接插入排序
public class InsertSort {
public static void main(String args[]) {
int[] b= {7,2,9,3,8,4,6,1,5};
insertSort(b);
for(int i:b) {
System.out.println(i);
}
}
public static void insertSort(int[] values) {
int ln=values.length,v,j;
for(int i=1;i<ln;i++) {
v=values[i];
j=i-1;
while(j>=0&&values[j]>v) {
values[j+1]=values[j];
j=j-1;
values[j+1]=v;
}
}
}
}
快速排序
public class QuickSort {
public static void main(String args[]) {
int[] b= {7,2,9,3,8,4,6,1,5};
quickSort(b);
for(int i:b) {
System.out.println(i);
}
}
private static boolean isEmpty(int[] n) {
return n==null||n.length==0;
}
public static void quickSort(int[] n) {
if(isEmpty(n))
return;
quickSort(n,0,n.length-1);
}
public static void quickSort(int[] n,int l,int h) {
if(isEmpty(n))
return;
if(l<h) {
int pivot=partion(n,l,h);
quickSort(n,l,pivot-1);
quickSort(n,pivot+1,h);
}
}
private static int partion(int[] n,int start,int end) {
int temp=n[start];
while(start<end) {
while(n[end]>=temp&&start<end)
end--;
if(start<end) {
n[start++]=n[end];
}
while(n[start]<temp&&start<end)
start++;
if(start<end) {
n[end--]=n[start];
}
}
n[start]=temp;
return start;
}
}