黑马程序员技术交流社区

标题: 查找学习笔记 [打印本页]

作者: 熊乾坤    时间: 2015-6-4 15:05
标题: 查找学习笔记
排序方法

JAVA中的排序算法一般主要有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。

快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。

冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。

选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。

插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。

快速排序法、原理:

选择数组中的一个元素作为标准,将所有比标准小的元素放到左边,所有比标准大的元素放到右边。 并对左边和右边的元素做一样的快速排序过程。

public int[] quickSort(int[] result) {

      quick(result, 0, result.length - 1);

      return result;

   }

选择数组中的一个元素作为标准,将所有比标准小的元素放到左边,所有比标准大的元素放到右边并对左边和右边的元素做一样的快速排序过程。
   int pIndex = startIndex;

      for (int i = startIndex + 1; i <= endIndex; i++) {

         if (array[i] < array[pIndex]) {

            int temp = array[i];

            for (int j = i; j > pIndex; j--) {

                array[j] = array[j - 1];

            }

            array[pIndex] = temp;

            pIndex++;

         }

      }

      if (pIndex - startIndex > 1) {

         quick(array, startIndex, pIndex - 1);

      }

      if (endIndex - pIndex > 1) {

         quick(array, pIndex + 1, endIndex);

      }

冒泡排序法

比较n轮,每一轮都把最大元素移动到数组后端。

   public static void bubbleSort(int[] arr){

      for(int x = 0 ; x < arr.length ; x++){

         for(int y = 0 ; y < arr.length -1 - x;y++){

            if(arr[y] > arr[y+1]){

                swap(arr,y,y+1);

            }

         }

      }

   }

选择排序法

每遍历未排序部分一次都选出一个最小值,并将最小值元素移动到数组前端
public static void selectSort(int[] arr){

      for(int x = 0 ;x < arr.length ; x++){

         for(int y=x+1 ; y<arr.length ; y++){

            if(arr[x] > arr[y]){

                swap(arr,x,y);

            }

         }

      }

   }

插入排序法

原理与插入排序类似,不同点在于寻找插入位置的时候,采取的是折半查找方法
作者: 山崩地裂    时间: 2015-6-4 16:02
学习了。不错的总结:)
作者: 天涯111    时间: 2015-6-4 17:50
你这个比基础视屏上讲的排序方法都要多,基础视屏上只列举了选择排序和冒泡排序,不过感觉排序的代码写出来都大同小异,还有就是在Java软件中有自带的排序功能  ,用起来更方便。import Java.util.*;Arrays.sort();
作者: 银哥    时间: 2015-6-4 18:13
刚刚复习这个
作者: 海角秋风    时间: 2015-6-4 18:32
又学习了一遍。。。
作者: 李志鹏    时间: 2015-6-4 18:54
不错啊!
作者: wenweishan2015    时间: 2015-6-4 20:43
不错的总结
作者: 小车车    时间: 2015-6-4 21:37
不错,学习!
作者: Heroe    时间: 2015-6-4 21:42
看看...

作者: wang649557111    时间: 2015-6-4 22:01
挺好、。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2