この記事では、バブルソートとクイックソートを比較しています
1つは、バブルソート
- アルゴリズム
//对数组nums的索引i + 1 ~ nums.length - 1 数组元素进行排序
for(int m = i + 1; m < nums.length; m++){
for(int n = nums.length - 1; n > m; n--){
if(nums[n] < nums[n - 1]){
tmp = nums[n - 1];
nums[n - 1] = nums[n];
nums[n] = tmp;
}
}
}
- 説明
a。外層mは毎回1つ少なくなり、内層ループの数を毎回制限するために使用されます
b。外層は増加し、内層は減少しています。
2、クイックソート
- アルゴリズム
private void quickSort(int[] nums, int from, int to){
//结束条件
if(from >= to){
return;
}
//以第一个为中轴点分开为两个数组
int left = from, right = to;
int midVal = nums[from];
int round = 2;//1表示左侧判断,1表示右侧判断
while(left < right){
if(round == 1){
if(nums[left] <= midVal){
left++;
}else{
nums[right] = nums[left];
right--;
round = 2;
}
}else if(round == 2){
if(nums[right] >= midVal){
right--;
}else{
nums[left] = nums[right];
left++;
round = 1;
}
}
}
nums[left] = midVal;
//递归
quickSort(nums, from, left - 1);
quickSort(nums, left + 1, to);
}
- 説明
a。クイックソートを再帰的に実現b。https://blog.csdn.net/qq_40285839/article/details/83018673を
参照