时间过的可真快!转眼间已经做程序员好几年了,这几年一直在写java程序,但是很基础的知识却逐渐忘却了!今天写几个较常用的排序熟悉一下基础知识.
选择排序:
public class ChooseSort {
public void sort(int[] queue){
for(int i=0;i<queue.length-1;i++){
int k=i;
for(int j=i+1;j<queue.length;j++){
if(queue[j]<queue[k]){
k=j;
}
}
if(k!=i){
swap(queue,i,k);
}
}
}
/**
* 交换位置
*/
private void swap(int[] queue, int i, int k) {
int temp = queue[i];
queue[i] = queue[k];
queue[k] = temp;
}
}
冒泡排序:
public class MaoPao {
public void sort(int[] queue){
for(int i=0;i<queue.length-1;i++){
for(int j=i+1;j<queue.length;j++){
if(queue[i]>queue[j]){
swap(queue,i,j);
}
}
}
}
/**
* 交换位置
*/
public void swap(int[] queue,int i,int j){
int temp = queue[i];
queue[i] = queue[j];
queue[j] = temp;
}
}
快速排序:
public class QuickSort {
public void sort(int[] queue){
int left = 0;
int right = queue.length-1;
sub(left,right,queue);
}
private void sub(int left, int right, int[] queue) {
if(left<right){
int middleNum = queue[(left+right)/2];
int i = left-1;
int j = right +1;
while(true){
while(queue[++i]<middleNum);
while(queue[--j]>middleNum);
if(i>=j){
break;
}
swap(queue,i,j);
}
sub(left,i-1,queue);
sub(j+1,right,queue);
}
}
private void swap(int[] queue, int i, int j) {
int temp = queue[i];
queue[i] = queue[j];
queue[j] = temp;
}
}