java排序算法。排序是CODE经常会用到的,在此做一个用JAVA实现的排序算法以供以后忘了的时候有备参考!
首先,在排序过程中,经常会对数组中两个元素进行交换,以下是交换算法:
public static void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
1 选择排序
选择排序其实在前面已经有一篇文章说明了,不过为了此处能讲全排序算法,再次提及.
选择排序在任何情况下都是O(n2)
public String[] selectionSort(int[] arrayA){
for (int i = 0; i < arrayA.length – 1; i++) {
int minIndex = i;
// Find smallest value
for (int j = i + 1; j < arrayA.length; j++) {
int e1 = arrayA[j];
int e2 = arrayA[minIndex];
// Compare two value
if (e1<e2) {
minIndex = j;
}
}
// Swap value if necessary
if (minIndex != i){
swap(arrayA,minIndex,j);
}
}
return arrayA;
}
2 冒泡排序
对于平均情况,冒泡排序的性能是O(n2)
public static void bubbleSort(int[] array{
for(int i=0;i<array.length-1;i++){
boolean swapped=false;
for(int j=0;j<array.length;j++){
if(array[j]>array[j+1]){
swap(array,i,j+1);
swapped=tree;
}
}
if(!swapped){
return;
}
}
}
3 插入排序
插入排序的最差情况性能是O(n2)
public static void insertionSort(int[] array){
for(int i=1;i<array.length;i++){
int itemToInsert=array[i];
int j=i-1;
while(j>=0){
if(itemToInsert<array[j]){
array[j+1]=array[j];
j–;
}
else{
break;
}
}
array[j+1]=itemToInsert;
}
}
OK,就到这里了,这是常用的也是数据结构上的三种排序算法,喝杯咖啡去