冒泡排序和二分查找

深碍√TFBOYSˉ_ 2022-01-27 07:35 281阅读 0赞

有序数组二分查找实现:

  1. public class BinarySearch{
  2. /*
  3. int midArray = (rightArray - leftArray) / 2; //每次循环都会改变,要重新算
  4. int midArray = leftArray + (rightArray - leftArray)/2; //为了防止溢出,
  5. */
  6. public static int binarySearch(int[] array, int key) {
  7. int leftArray = 0;
  8. int rightArray = array.length;
  9. //[leftArray, rightArra)区间还有数继续循环
  10. while(leftArray < rightArray){
  11. int midArray = leftArray + (rightArray - leftArray)/2;
  12. if(key == array[midArray]){
  13. return midArray;
  14. }else if(key < array[midArray]){
  15. rightArray = midArray;
  16. }else{
  17. leftArray = midArray + 1;
  18. }
  19. }
  20. return -1;
  21. }
  22. public static void main(String[] args) {
  23. int[] array = {
  24. 1,2,3,4,5,6,7,8,9};
  25. int index1 = binarySearch(array,7);
  26. System.out.println("7 的下标是:" + index1);
  27. }
  28. }

运行结果:

在这里插入图片描述

冒泡排序

  1. import java.util.Arrays;
  2. public class BubbleSort{
  3. public static void bubbleSort(int[] array){
  4. //本质上是 减治算法
  5. int tmp = 0;
  6. for(int i=0; i<array.length-1; i++){
  7. //控制比较次数
  8. boolean isSwapped = false;
  9. //经过两两比较,将最大的数冒泡到最后
  10. for(int j=0; j < array.length - i - 1; j++){
  11. if(array[j] > array[j+1]) {
  12. tmp = array[j];
  13. array[j] = array[j+1];
  14. array[j+1] = tmp;
  15. isSwapped = true;
  16. }
  17. }
  18. if(!isSwapped){
  19. //优化
  20. return;
  21. }
  22. }
  23. }
  24. public static void printArray(int[] array){
  25. for(int i=0; i<array.length; i++){
  26. System.out.printf("%d ",array[i]);
  27. }
  28. System.out.println();
  29. }
  30. public static void main(String[] args){
  31. int[] randomArray = new int[]{
  32. 3,5,2,12,3,56,75,32};
  33. //System.out.println(Arrays.toString(bubbleSort(randomArray)));//错误
  34. System.out.print("使用自定义方法打印数组: \t");
  35. printArray(randomArray);
  36. System.out.print("使用toString方法打印数组: \t");
  37. System.out.println(Arrays.toString(randomArray));//使用 toStirng()方法打印数组
  38. bubbleSort(randomArray);
  39. System.out.print("排序后的数组: \t\t\t");
  40. System.out.println(Arrays.toString(randomArray));
  41. //System.out.println(bubbleSort(randomArray));
  42. //错误: 此处不允许使用 '空' 类型
  43. //System.out.println(bubbleSort(new int[]{ 3,5,2,12,3,56,75,32}));
  44. //错误: 此处不允许使用 '空' 类型
  45. //System.out.println(bubbleSort(randomArray)); 中直接传入数组是无法打印的,要使用toString()方法
  46. }
  47. }

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,281人围观)

还没有评论,来说两句吧...

相关阅读

    相关 冒泡排序二分查找

    冒泡排序: 冒泡排序的核心思想是用第一个数依次与以后的数比较,如果有比它大或者比它小的就与它交换位置,那么第一个得到的数就是最大或者最小的;同理用第二个数再执行依次,,,依次