冒泡排序:
public void Bubble_Sort(int a[]){
int flag = 0;//标识位,如果初始有序,不再进行操作
int temp;
for(int i=0; i<a.length-1; i++){
for(int j=0; j<a.length-i-1; j++){
if(a[j]>a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
flag = 1;
}
}
if(flag == 0){
break;
}
}
for(int i=0; i<10; i++){
System.out.println(a[i]);
}
}
直接插入排序:
public void Insert_Sort(int[] a){
int temp;
int j=0;
for(int i=1; i<a.length-1; i++){
temp = a[i];
for(j=i-1; j>=0; j++){
if(a[j]>temp){
a[j+1] = a[j];
}else{
break;
}
}
a[j+1] = temp;
}
for(int i=0; i<10; i++){
System.out.println(a[i]+"");
}
}
一般快速排序(默认第一个元素为枢纽):
public void Quick_Sort(int a[], int lo, int hi){
int i,j;
if(lo>=hi){
return;
}
i = lo;
j = hi;
int pivot = a[i];
while(i<j){
while((i<j)&&(pivot <= a[j])){
j--;
}
if(i<j){
a[i] = a[j];
i++;
}
while((i<j)&&pivot>=a[i]){
i++;
}
if(i<j){
a[j] = a[i];
j--;
}
}
a[i] = pivot;
System.out.println("第一趟j="+j);
Quick_Sort(a, lo, j-1);
Quick_Sort(a,j+1, hi);
}
快速排序优化(三者取中):
public void Quick_mid(int a[], int lo, int hi){
if(lo>=hi){
return;
}
int i,j,pivot;
i = lo;
j = hi-1;
int t = (int)((lo+hi)/2);
pivot = a[t];
a[t] = a[hi];
while(i<j){
while((i<j)&&(a[i]<=pivot)){
i++;
}
while((i<j)&&(a[j]>=pivot)){
j--;
}
if(i<j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}if((i==j)&&(a[i]>pivot)){
a[hi] = a[i];
a[i] = pivot;
}else{
a[hi] = a[i+1];
a[++i] = pivot; //注意:i自加1
}
Quick_mid(a, lo,i-1);
Quick_mid(a, i+1, hi);
}
简单排序:
public void Simple_Sort(int a[], int n){
int i, j;
for(i=0; i<n; i++){
int t = i;//记录最小元素下表
for(j=i+1; j<n; j++){
if(a[t] > a[j]){
t = j;
}
}
if(t!=i){
int temp = a[t];
a[t] = a[i];
a[i] = temp;
}
}
}