Sort Methods
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的更多相关文章
- reverse(), extend(), sort() methods of list
>>> l = list('sdf') >>> l ['s', 'd', 'f'] >>> id(l) 4520422000 >>&g ...
- 总结: Sort 排序算法
排序总结 面试经验 硅谷某前沿小Startup面试时,问到的一个题目就是写一个快速排序算法.进而面试官问到了各种算法的算法复杂度,进而又问了Merge Sort 与 QuickSort 的优劣. 对排 ...
- 谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo
前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的话分工会更细,比如携程: 携程app = 机票频道 + 酒店频道 + 旅游频道 + ..... ...
- MacOS10.11的/usr/bin目录不可写后class-dump的处理办法
许多升级了OSX 10.11的朋友在配置class-dump的时候,会发现书上推荐的class-dump存放目录/usr/bin不再可写,如下所示: 192:~ snakeninny$ touch c ...
- 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 ...
- go实例之排序
1.默认排序 使用sort包进行排序.排序是就地排序,因此它会更改给定的切片,并且不返回新的切片. package main import "fmt" import "s ...
- mina statemachine解读(一)
statemachine(状态机)在维护多状态数据时有非常好的作用,现在github上star排名最前的是squirrel-foundation以及spring-statemachine,而min ...
- Comparable vs Comparator
Comparable interface can be used to provide single way of sorting whereas Comparator interface is us ...
- class-dump 使用
转:class-dump 使用 class-dump 官网地址:这里 我这里下载的是 class-dump-3.5.dmg 版本的.双击.dmg 文件,将 拉倒 /usr / local / bin ...
随机推荐
- 1. web前端开发分享-css,js入门篇
关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
- Excel—SUMPRODUCT用法指南
1.最简单的SUMPRODUCT函数等同与SUM函数. 2.SUMPRODUCT可以设置多参数,其输出值为各参数对应值的乘积之和. E2=6*7+8*6+2*8+9*8+3*8+5*9 3.SUMPR ...
- C#RSA算法实现+如何将公钥为XML格式转为PEM格式,给object-C使用
.net中,处于安全的考虑,RSACryptoServiceProvider类,解密时只有同时拥有公钥和私钥才可以.原因是公钥是公开的,会被多人持有.这样的数据传输是不安全的.C#RSA私钥加密,公钥 ...
- 我的C语言进化史
Hello, world! 这三年就看看我的C语言还有JAVAscript进化史吧.更厉害的sunmarvell,我等你
- git diff 生成patch, git apply patch 打补丁方法说明,以及分支管理的简单操作。
git diff 简易操作说明 先git log 查看commit ID, 记录你想要打的补丁的ID 比如说: git log commit 4ff35d800fa62123a28b7bda2a04e ...
- CPUID指令简单调用
关于CPUID指令,可以看维基百科的相关介绍 https://en.wikipedia.org/wiki/CPUID 在windows下可以调用__cpuid和__cpuidex这两个函数,__cpu ...
- PHPSTORM设置新建PHP文件头部注释
1.选择 File|setting 2.在Editor|File and Code Templates,见下图标记更改即可
- [转]大数据时代,python竟是最好的语言?
随着大数据疯狂的浪潮,新生代的工具Python得到了前所未有的爆发.简洁.开源是这款工具吸引了众多粉丝的原因.目前Python最热的领域,非数据分析和挖掘莫属了.从以Pandas为代表的数据分析领 ...
- web.config数据库连接字符串
我们在做VB数据库经典实例这本书上的五个小例子和做学生信息管理系统时,都需要通过Vb链接数据库,在众多的链接方式中connectionstring字符串应该是较为简单的一种方式,下面我来详细介绍它的一 ...