java算法

来源:互联网 发布:腾讯股票数据接口api 编辑:程序博客网 时间:2024/06/05 21:14

  这里首先给大家介绍的是插入排序和快速排序,再之后是冒泡。

  插入排序:在大多数情况下,插入排序算法是相对于冒泡,选择,对象这些中最好的一种。虽然插入排序算法仍然需要O(N二次方)的时间,但是在一般情况下,它要比冒泡排序快一倍,比选择排序还要快一点。尽管它比冒泡排序算法和选择排序算法都更麻烦一些,但它也并不很复杂。而且它的空间复杂度和冒泡选择一样只为O(1)常数阶。


/**     *插入排序(WHILE循环实现)     *@paramsrc待排序数组     */public void insertionSort(long arr[]){        int in,out;        for(out = 1; out <arr.length; out++){             long temp = arr[out];             in = out;             while(in > 0 && arr[in-1] >= temp){                  arr[in] = arr[in -1];                   --in;             }            arr[in] = temp;        }        for (long l : arr) {System.out.println(l);}}


public class QuickSort {public static void main(String[] args) {int[] array = { 49, 38, 65, 97, 76, 13, 27 };quickSort(array, 0, array.length - 1);for (int i = 0; i < array.length; i++) {System.out.println(array[i]);}}/* * 先按照数组为数据原型写出算法,再写出扩展性算法。数组{49,38,65,97,76,13,27} */public static void quickSort(int[] n, int left, int right) {int pivot;if (left < right) {// pivot作为枢轴,较之小的元素在左,较之大的元素在右pivot = partition(n, left, right);// 对左右数组递归调用快速排序,直到顺序完全正确quickSort(n, left, pivot - 1);quickSort(n, pivot + 1, right);}}public static int partition(int[] n, int left, int right) {int pivotkey = n[left];// 枢轴选定后永远不变,最终在中间,前小后大while (left < right) {while (left < right && n[right] >= pivotkey)--right;// 将比枢轴小的元素移到低端,此时right位相当于空,等待低位比pivotkey大的数补上n[left] = n[right];while (left < right && n[left] <= pivotkey)++left;// 将比枢轴大的元素移到高端,此时left位相当于空,等待高位比pivotkey小的数补上n[right] = n[left];}// 当left == right,完成一趟快速排序,此时left位相当于空,等待pivotkey补上n[left] = pivotkey;return left;}}


  

0 0