並べ替えアルゴリズムの練習-バブル並べ替えとクイック並べ替えテンプレート

この記事では、バブルソートとクイックソートを比較しています

1つは、バブルソート

  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;
          }
      }
  }
  1. 説明
    a。外層mは毎回1つ少なくなり、内層ループの数を毎回制限するために使用されます
    b。外層は増加し、内層は減少しています。

2、クイックソート

  1. アルゴリズム
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);
}
  1. 説明
    a。クイックソートを再帰的に実現b。https://blog.csdn.net/qq_40285839/article/details/83018673を
    参照

おすすめ

転載: blog.csdn.net/hudmhacker/article/details/107709706