zoukankan      html  css  js  c++  java
  • algorithm

    常用的排序算法:

    快速排序的空间复杂度为log2n,没有n乘

    package com.zrm.bubble;

    /*
    bubble sort相邻两个元素进行比较选出(大的或者是小的一个)来进行位置交换然后接着喝后面的数进行比较
    重复相同的操作一次循环可以选出一个最大或者最小的数排在最后一个,剩下的再重复之前的操作找出下一个
    */
    public class BubbleSort {
    public static int[] list = {1,5,2,7,8,6,4,9};
    public static void sort(){
    for (int i=list.length-1;i>0;i--){
    for (int j=0;j<i;j++){
    if(list[j]>list[j+1]){
    int temp = list[j];
    list[j] = list[j+1];
    list[j+1] = temp;
    }
    }
    }
    for (int a:list){
    System.out.print(a+" ");
    }
    }

    public static void main(String[] args) {
    BubbleSort.sort();
    }
    }
    package com.zrm.insertion;

    /*
    插入排序从第二个数开始跟前一个数做比较,如果比前一个数小就插入到他的前面(交换位置),然后再把第三个数
    拿来跟第二个数比较一步步插入到里面,最终可以排好序;
    */
    public class InsertionSort {
    public static int[] list = {1, 5, 2, 7, 8, 6, 4, 9};

    public static void sort() {
    for (int i = 1; i < 8; i++)
    for (int j = i; j > 0; j--) {
    if (list[j] < list[j - 1]) {
    int temp = list[j - 1];
    list[j - 1] = list[j];
    list[j] = temp;
    }
    }

    for (int a : list) {
    System.out.print(a + " ");
    }
    }

    public static void main(String[] args) {
    InsertionSort.sort();
    }
    }

       

    package com.zrm;

    public class ShellSort {
    /*
    * 希尔排序是在插入排序的基础上进行的优化的一种排序,希尔排序给待排序数组设置一个间隔
    * 在此间隔的基础上从数组中取数进行一次插入排序,依次排完一次;之后把间隔缩小接着排,
    * 最终间隔为1的时候就跟普通的插入排序一样了,但是总的来说希尔排序的效率比直接用插入排序要搞一些
    * 空间复杂度为O(1),时间复杂度最好为O(1^3);间隔最优为:
    * h= 1;
    * h = 3*h +1;
    */
    public static void main(String[] args) {
    //待排序数组
    int[] arr = new int[]{2, 4, 1, 3, 7, 9, 5, 6, 8, 11, 13, 15, 14, 12};
    //排序
    for (int gap = 4; gap > 0; gap--) {
    for (int i = gap; i < arr.length; i++) {
    for (int j = i; j > gap - 1; j -= gap) {
    if (arr[j] < arr[j - gap]) {
    int temp = arr[j - gap];
    arr[j - gap] = arr[j];
    arr[j] = temp;
    }
    }
    }
    }
    //打印
    for (int x : arr) {
    System.out.println(x + " ");
    }
    }
    }

  • 相关阅读:
    面试C#需要准备的一些基础
    学习jQuery(一),做的第一个可拖动列的Grid
    面试的两道SQL题
    SSIS ODBC方式连接mysql数据库的一个问题
    WIN7下A卡解决部分游戏(CS、CF等)无法全屏问题
    显示Deprecated: Assigning the return value of new by reference is deprecated in解决办法
    Eclipse 中文插件的安装
    安装NASM for Linux
    将Eclipse中文注释字体变大方法
    如何查看局域网内所有IP
  • 原文地址:https://www.cnblogs.com/zrmj/p/11408478.html
Copyright © 2011-2022 走看看