一合冀、常見排序列表
常見排序列表
重點(diǎn):插入排序、堆排序业岁、并歸排序鳞仙、快速排序
Java的Collections.sort算法調(diào)用的是歸并排序
二、冒泡排序算法
/**
* 冒泡排序算法
* @author AC
*/
public class Bubble {
/**
* {3,1,5,6,9,8,7,2,4}
* 冒泡算法特點(diǎn):
* 像氣泡一樣笔时,一個(gè)氣泡一個(gè)氣泡往上冒棍好;一個(gè)數(shù)一個(gè)數(shù)的往右排。
* 上面的氣泡最大,下邊的氣泡最惺崦怠爹梁;右邊的數(shù)最大右犹,左邊的數(shù)最小提澎。
*/
public void sort(int[] arry) {
for(int k = arry.length-1;k>0;k--) {
for(int i =0;i<k;i++) {
if(arry[i]>arry[i+1]) {
swap(i,i+1,arry);
}
}
}
}
public void swap(int indexA,int indexB,int []arry) {
int temp =arry[indexB];
arry[indexB] = arry[indexA];
arry[indexA] = temp;
}
}
排序太慢,基本不用
三念链、選擇排序算法
/**
* 選擇排序算法
* @author AC
*/
public class Selection {
/**
* {3,1,5,6,9,8,7,2,4}
* 選擇排序特點(diǎn):選出最大值的下標(biāo)
* 內(nèi)循環(huán)選(找)出當(dāng)前循環(huán)中最大值的下標(biāo)盼忌,把最大值下標(biāo)位置的值和最后位置的值交換
*/
public void sort(int[] arry) {
for(int k = arry.length-1;k>0;k--) {
int maxIndex = 0;
for(int i=0;i<k;i++) {
if(arry[maxIndex]<arry[i+1]) {
maxIndex = i+1;
}
}
swap(maxIndex,k,arry);
}
}
public void swap(int indexA,int indexB,int []arry) {
int temp =arry[indexB];
arry[indexB] = arry[indexA];
arry[indexA] = temp;
}
}
排序不穩(wěn),基本不用
四掂墓、插入排序算法
/**
* 插入排序算法
* @author AC
*/
public class Insertion {
/**
* {3,1,5,6,9,8,7,2,4}
* 插入排序:像打牌時(shí)插牌一樣谦纱,抓一張新牌,就把它插在合適的位置
*/
public void sort(int[] arry) {
for(int k = 1;k<arry.length;k++) {
for(int i = k;i>0;i--) {
if(arry[i]<arry[i-1]) {
swap(i,i-1,arry);
}
}
}
}
public void swap(int indexA,int indexB,int []arry) {
int temp =arry[indexB];
arry[indexB] = arry[indexA];
arry[indexA] = temp;
}
}
樣本小組基本有序時(shí)候效率比較高