冒泡排序 | 快速排序 | 线性查找 | 二分查找等

    技术2022-07-11  85

    目录

    排序算法:冒泡排序排序算法:快速排序数组的复制、反转、查询(线性查找、二分查找)


    排序算法:冒泡排序

    public static void main(String[] args){ int[] arr = new int[]{43,32,76,-98,0,64,32,15,108,-21,59}; //冒泡排序 for(int i = 0;i< arr.length - 1;i++){ for(int j = 0;j< arr.length - 1 -i;j++){ if(args[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } for(int i = 0;i< arr.length;i++){ System.out.print(arr[i]+"\t"); } }

    排序算法:快速排序

    通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。

    /** * 快速排序 * 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小, * 则分别对这两部分继续进行排序,直到整个序列有序。 */ public class QuickSort { private static void swap(int[] data, int i, int j) { int temp = data[i]; data[i] = data[j]; data[j] = temp; } private static void subSort(int[] data, int start, int end) { if (start < end) { int base = data[start]; int low = start; int high = end + 1; while (true) { while (low < end && data[++low] - base <= 0) ; while (high > start && data[--high] - base >= 0) ; if (low < high) { swap(data, low, high); } else { break; } } swap(data, start, high); subSort(data, start, high - 1);//递归调用 subSort(data, high + 1, end); } } public static void quickSort(int[] data){ subSort(data,0,data.length-1); } public static void main(String[] args) { int[] data = { 9, -16, 30, 23, -30, -49, 25, 21, 30 }; System.out.println("排序之前:\n" + java.util.Arrays.toString(data)); quickSort(data); System.out.println("排序之后:\n" + java.util.Arrays.toString(data)); } }

    数组的复制、反转、查询(线性查找、二分查找)

    public static void main(String[] args){ String arr = new String[]{"AA","BB","JJ","GG","MM","DD"}; //数组的复制(区别于数组变量的赋值:arr1 = arr) String[] arr1 = new String[arr.length]; for(int i = 0;i<arr1.length;i++){ arr1[i] = arr[i]; } //数组的反转 //方式一: for(int i =0;i < arr.length / 2;i++){ String temp =arr[i]; arr[i] = arr[arr.length - i -1]; arr[arr.length - i -1] = temp; } //方式二: for(int i =0;j = arr.length -1;i<j;i++,j--){ String temp =arr[i]; arr[i] = arr[j]; arr[j] = temp; } //遍历 for(int i = 0;i < arr.length;i++){ System.out.print(arr[i]+"\t"); } System.out.println(); //查找(搜索) //线性查找 //思路:通过遍历的方式,一个一个的数据进行比较、查找。 //具普遍适用性 String dest = "BB"; boolean isFlag = true; for(int i=0;i<arr.length;i++){ if(dest.equels(arr[i])){ System.out.println("找到指定的元素,位置为:"+i); isFlag = false; break; } } if(isFlag){ System.out.println("很遗憾没有找到哦!"); } //二分法查找 //前提,所有查询的数组必须有序 //每次比较中间值,折半的方式检索 int arr2 = new int[]{-98,-34,2,34,66,79,106,214,333}; int dest1 = -34; int head = 0;//初始化的首索引 int end = arr2.length -1;//初始化末索引 boolean isFlag1 = true; while(head < end){ int middle = (head + end)/2; if(dest1 == arr2[middle]){ System.out.println("找到指定的元素,位置为:"+middle); isFlag1 = false; break; }else if(arr2[middle] > dest1){ end = middle - 1; }else{ head = middle + 1; } } if(isFlag){ System.out.println("很遗憾没有找到哦!"); } }

    好了,我亲爱的读者朋友,以上就是本文的全部内容了!!!

    觉得有点用记得给我点赞哦!

    通过坚持不懈地学习,持续不断地输出,你的编程基本功算得上是突飞猛进。

    为了帮助更多的程序员,专注于分享有趣的 Java 技术编程和有益的程序人生。一开始,阅读量寥寥无几,关注人数更是少得可怜。但随自己的不断努力,阅读量和关注人都在猛烈攀升。

    绝对不容错过,期待与你的不期而遇。

    Processed: 0.010, SQL: 9