版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/y331271939/article/details/45538629
1.冒泡排序
void bubbling_sort(int[] myInt){
int temp;
for (int i = 0; i < myInt.length; i++) {
for (int j = 0; j < myInt.length - 1 - i; j++) {
if(myInt[j] > myInt[j + 1]){
temp = myInt[j];
myInt[j] = myInt[j + 1];
myInt[j + 1] = temp;
}
}
}
}
2.快速排序
/*
* @param myInt[] 要排序的数组
* @param l 排序数组的第一个下标
* @param r 排序数组的最后一个下标
*
* eg: quick_sort(myInt, 0, myInt.length - 1);
*/
void quick_sort(int myInt[], int l, int r){
/*
原理:找一个基准数将数组分为两部分,大于基准数的都在右边,小于基准数的都在左边,然后将分成的两部分再分别以基准数的方式分成两部分,后面以此类推
*/
if (l < r){//l<r用来终止递归
int i = l, j = r;
int key = myInt[l];//选数组中第一个数为基准数
/*
最外层循环首先以基准数key将数组分为大于key和小于key的两部分,i=j时最外层循环结束
*/
while (i < j){
/*
当myInt[j]小于基准数时将myInt[i]换为myInt[j],并结束当前循环,否则j向前走继续查找小于基准数的myInt
*/
while(i < j){
if(myInt[j] < key){
//将i+1,此处i不是必须要+1的,不+1结果一样,不过每次多比较一个
myInt[i++] = myInt[j];
break;
}else{
j--;
}
}
/*
当myInt[i]大于基准数时将myInt[j]换为myInt[i],并结束当前循环,否则i向后走继续查找大于基准数的myInt
*/
while(i < j){
if(myInt[i] > key){
//j--同上
myInt[j--] = myInt[i];
break;
}else{
i++;
}
}
}
myInt[i] = key;//最后将基准数给myInt[i]
quick_sort(myInt, l, i - 1);//递归调用排基准数左边的数组
quick_sort(myInt, i + 1, r);//递归调用排基准数右边的数组
}
}