Shell 排序
插入排序
冒泡排序
public void shellSort(int R[]) {
int gap = R.length / 2;
int temp;
while (gap > 0) {
for (int i = gap; i < R.length; i++){
temp = R[i];
int j = i - gap;
while(j>=0&&temp<R[j]){
R[j+gap]=R[j];
j=j-gap;
}
R[j+gap]=temp;
}
//System.out.println(gap);
gap=gap/2;
}
}
选择排序
public void selectionSort(int [] source){
int len = source.length;
for(int i=0;i<len;i++){
int k=i;
for(int j=len-1;j>i;j++){
if(source[j]<source[k]){
k=j;
}
int temp = source[i];
source[i]=source[k];
source[k]=temp;
}
}
}
插入排序
public void insertSort(int[] numbers) {
int len = numbers.length;
int j;
for(int i=1;i<len;i++){
int temp=numbers[i];
for(j=i;(j>0)&&temp<numbers[j-1];j--){
numbers[j]=numbers[j-1];
}
numbers[j]=temp;
}
}
冒泡排序
public void bubbleSort(int[] source){
//优化算法技巧
boolean exchange;
int len = source.length;
for(int i=0;i<len;i++){
exchange =false;
for(int j=len-1;j>=i+1;j--){
if(source[j]<source[j-1]){
int temp=0;
temp= source[j];
source[j]=source[j-1];
source[j-1]=temp;
exchange =true;
}
}
if(!exchange){
return;
}
}
}
快速排序
public static void quickSort(int[] numbers, int start, int end) {
if (start < end) {
int base = numbers[start]; // 选定的基准值(第一个数值作为基准值)
int i = start, j = end;
while(i<j){
while ((numbers[j] > base) && (j > start))
j--;
if(i<j) numbers[i++]= numbers[j];
while ((numbers[i] < base) && (i < end))
i++;
if(i<j) numbers[j--]=numbers[i];
}
numbers[i]=base;
quickSort(numbers, start, i-1);
quickSort(numbers, i+1, end);
System.out.println(Arrays.toString(numbers));
}
}