heyheyhey ~~

It has been a long time since i come here again...whatever today i will summerize some methods of sort with java what are so important for coder. The codes below are all compiled successfully and have the right results

. insert sort -- is divided into insert directly and Shell Sort.

1. insert directly -- the main idea is while obtaining a new value, to compare the new value with the number of sorted array, when get the position that the value is lager than the front number and smaller than the behind number,  insert the value.

public class InsertDirectly {

  public static void insertDirectly(int[] a) {

    for(int i = 1; i<a.length; ++i) {

      // because maybe the insert value would be complicanted , so we should define a copy for it

      int temp = a[i];

      // then go through the every number of the sorted array to find out the right position.

      // to make the j be the global variable.

      int j = i-1

      // because maybe the a[i] would be complicanted,  so a[j] shouled > temp,not a[i]

      for(; j >= 0 && a[j] > temp; --j) {

        a[j+1] = a[j]; 

      }

      a[j+1] = temp;

    }

  }

}

2. Shell Sort is the special sort of insert sort, just because it has the increment-'d' ,not one ny one any more.

main idea is just according to the 'd' to carry out the method of directly insert sort

public class ShellSort{

  public static void shellSort(int[] a) {

    // firt step :need to init the 'd'.

    double d1 = a.length;

    // the 'd' need to be changed, so make sure the loop

    while(true) {

      //ceil -- get the bigger one

      double d1 = Math.ceil(d1/2);

      int d = (int) d1;

      // for the outer loop

      for(int i = 0; i<d; ++i) {

        //for the increment loop

        for(int j = i+d; j < a.length; i+=d) {

          int temp = a[j];

          // for the inner loop

          int x = j-d;

          for(; x >= 0 && a[x] > temp; x-=d) {

            a[x+d] = a[x];

          }

          a[x+d] = temp;

        }

      }

      if( d == 1) break;

    }

  }

}

二. select sort -- is divided into easy select sort and heap sort.

1. easy select sort is the most easy sort --  main idea is make sure the loop of find out the lagest one or the smallest one ,and put it to the rear or head of the array

public class EasySort {

  public static void swap(int[] a ,int x, int y) {

    int temp = a[x];

    a[x] = a[y];

    a[y] = temp;

  }

  public static void easySort(int[] a) {

    for(int i = 0; i<a.length; ++i) {

      int max = a[i];

      int flag = i;

      for(int j = i+1; j < a.length;++j) {

        if(max < a[j]) {

          max = a[j];

          flag = j;

        }

      }

      swap(a, a.length-1-i, flag);

    }

  }

}

2.Heap Sort is actually the selected sort based on heap -- main idea is that build max or min heap and then change the position bettween the max or min and the last position.

public class HeapSort {

  // this methid is mainly to change the max value which is in the top of heap(in other word which is always the first position of the array)

// with the last number of this array.

  public static void swap(int[] a, int i, int j) {

    int temp = a[i];

    a[i] = a[j];

    a[j] = temp;

  }

  public static void heapSort(int[] a) {

    // from the last value of the array in order to buildMaxHeap circularly.

    for(int i = a.length-1; i > 0; --i) {

      buildMaxHeap(a, i);

      swap(a, 0, i);

    }

  }

  // next is the highlight of the heap sort ,and in this method we would to let u know how to bulid the max heap and how to reform the heap a

// again and again.

   public static void buildMaxHeap(int[] a,int lastIndex) {

    // step 1 : get the last father node of this heap

    int lastFather = (lastIndex-1)/2;

    // step 2 : we need to find out the max value among the father node and the subnodes

    for(int i = lastFather; i >= 0; --i) {

      // step 2.1 : first we need to find out the max value bettween the subnodes

      int biggerIndex = lastFather*2+1; //  make the left node be the max first and then judge if the right node exists

      if(biggerIndex < lastIndex) // make sure the right node exists {

        if(a[biggerIndex] < a[lastIndex]) {

          biggerIndex ++;

        }

      }

      // step 2.2 :  second we need to compare the biggerOne and the father node

      if(a[lastFather] < a[biggerIndex]) {

        // let the larger value go to the top

        swap(a, lastFather, biggerIndex);

      }

    }

  }

}

Sort Methods的更多相关文章

  1. reverse(), extend(), sort() methods of list

    >>> l = list('sdf') >>> l ['s', 'd', 'f'] >>> id(l) 4520422000 >>&g ...

  2. 总结: Sort 排序算法

    排序总结 面试经验 硅谷某前沿小Startup面试时,问到的一个题目就是写一个快速排序算法.进而面试官问到了各种算法的算法复杂度,进而又问了Merge Sort 与 QuickSort 的优劣. 对排 ...

  3. 谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo

    前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的话分工会更细,比如携程: 携程app = 机票频道 + 酒店频道 + 旅游频道 + ..... ...

  4. MacOS10.11的/usr/bin目录不可写后class-dump的处理办法

    许多升级了OSX 10.11的朋友在配置class-dump的时候,会发现书上推荐的class-dump存放目录/usr/bin不再可写,如下所示: 192:~ snakeninny$ touch c ...

  5. Core Java Volume I — 3.10. Arrays

    3.10. ArraysAn array is a data structure that stores a collection of values of the same type. You ac ...

  6. go实例之排序

    1.默认排序 使用sort包进行排序.排序是就地排序,因此它会更改给定的切片,并且不返回新的切片. package main import "fmt" import "s ...

  7. mina statemachine解读(一)

      statemachine(状态机)在维护多状态数据时有非常好的作用,现在github上star排名最前的是squirrel-foundation以及spring-statemachine,而min ...

  8. Comparable vs Comparator

    Comparable interface can be used to provide single way of sorting whereas Comparator interface is us ...

  9. class-dump 使用

    转:class-dump 使用 class-dump 官网地址:这里 我这里下载的是 class-dump-3.5.dmg 版本的.双击.dmg 文件,将  拉倒 /usr / local / bin ...

随机推荐

  1. vtkTubeFilter实例

    filter that generates tubes around lines vtkTubeFilter is a filter that generates a tube around each ...

  2. java从基础知识(七)java集合

    一.集合类介绍 1.List(元素有放入顺序,可重复) 1.1.List的实现 1.1.1.ArrayList ArrayList就是动态数组(需要连续的存储空间),用MSDN中的说法,就是Array ...

  3. Delphi XE7中各种字符串与字符类型的内存结构

    1. ShortString 类型 定义:type ShortString = string[255]; 内存结构与大小:ShortString 是每个字符为单字节的字符串.ShortString 的 ...

  4. DIV+CSS布局中主要CSS属性介绍

    Float: Float属性是DIV+CSS布局中最基本也是最常用的属性,用于实现多列功能,我们知道<div>标签默认一行只能显示一个,而使用Float属性可以实现一行显示多个div的功能 ...

  5. 【新手出发】从搭虚拟机开始,一步一步在CentOS上跑起来.Net Core程序

    文章背景 微软6月26号发布core 1.0版本后,园子里关于这方面的文章就更加火爆了,不管是从文章数量还是大家互动的热情来看,绝对是最热门的技术NO.1.我从去年底开始接触.net core到现在也 ...

  6. AM335x tscadc platform driver 相关代码跟踪

    TI AM335x ti am335x_tsc.c 代码跟踪 在kernel 首层目录: 先运行make ARCH=arm tags 这个作用是建立tags文件,只含有arm架构的,利用ctag即可进 ...

  7. Qt拖拽界面 (*.ui) 缩放问题及解决办法

    问题 使用Qt Designer 设计的界面,在缩放的时候不能随着主窗口一起缩放. 解决办法 之前遇到这个问题的时候,都是直接重写resizeEvent接口来实现的,在自动生成的Ui_Widget或U ...

  8. sql server2008根据经纬度计算两点之间的距离

    --通过经纬度计算两点之间的距离 create FUNCTION [dbo].[fnGetDistanceNew] --LatBegin 开始经度 --LngBegin 开始维度 --29.49029 ...

  9. 【java回调】java两个类之间的回调函数传递

    背景交代:熟悉用js开发的cordovaAPP:对java一窍不通的我,老师让做一个监测用户拍照事件的功能,无奈没有找到现成的库,无奈自己动手开发java插件~~0基础java GreenHand,祝 ...

  10. Mac 编写oracle 连接脚本

    首先需要本地存有sqlplus命令, 如果没有则需要到官网下载 也可点击我进行下载 (解压 readme.txt 有安装配置说明): 在Oracle官网下载instant client for os ...