几种常见的排序算法

最近在看数据结构看到排序时,感觉蛮不错的于是乎归纳一下:

1、冒泡排序

public static int[] bubbleSort(int[] a){
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]){
// a[j]=a[j]+a[j+1];
// a[j+1]=a[j]-a[j+1];
// a[j]=a[j]-a[j+1];
a[j]=a[j]^a[j+1];
a[j+1]=a[j]^a[j+1];
a[j]=a[j]^a[j+1];
}
}
}
return a;
}


2、插入发排序

public static int[] insertSort(int [] a){
for (int i = 1; i < a.length; i++) {
for (int j = i; j > 0; j--) {
if(a[j]<a[j-1]){
a[j]=a[j]^a[j-1];
a[j-1]=a[j]^a[j-1];
a[j]=a[j]^a[j-1];
}else {
break;
}
}
}
return a;
}

3、选择排序

public static int[] selectSort(int [] a){
for (int i = 0; i < a.length; i++) {
int temp=a[i],k=i;
for (int j = i; j < a.length-1; j++) {
if(a[j]>a[j+1]){
temp=a[j+1];
k=j+1;
}
}
if(i!=k){
a[i]=a[i]+a[k];
a[k]=a[i]-a[k];
a[i]=a[i]-a[k];
}
}
return a;
}

4、快速排序

public static int[] insertSort(int [] a){
for (int i = 1; i < a.length; i++) {
for (int j = i; j > 0; j--) {
if(a[j]<a[j-1]){
a[j]=a[j]^a[j-1];
a[j-1]=a[j]^a[j-1];
a[j]=a[j]^a[j-1];
}else {
break;
}
}
}
return a;
}

/**
* 快速排序
*/

public static int[] quickSort(int[] a,int left,int right){
int index = partion(a, left, right);
if(left < index-1){
quickSort(a, left, index-1);
}
if(index < right){
quickSort(a, index, right);
}
return a;
}

public static int partion(int[]a ,int left,int right){
int pivot = a[(left+right)/2];
while (left<=right) {
while (a[left]<pivot) {
left++;
}
while (a[right]>pivot) {
right--;
}
if(left<=right){
int temp = a[left];
a[left] = a[right];
a[right] = temp;
left++;
right--;
}
}
return left;
}

你可能感兴趣的:(几种常见的排序算法)