package org.idcn.jse;
public class SortAll {
/**
* 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现
* 2008.11.09
* @author YangL. (http://www.idcn.org)
*/
public static void main(String[] args) {
int[] i = { 1, 5, 6, 12, 4, 9, 3, 23, 39, 403, 596, 87 };
System.out.println("----冒泡排序的结果:");
maoPao(i);
System.out.println();
System.out.println("----选择排序的结果:");
xuanZe(i);
System.out.println();
System.out.println("----插入排序的结果:");
chaRu(i);
System.out.println();
System.out.println("----希尔(Shell)排序的结果:");
shell(i);
}
// 冒泡排序
public static void maoPao(int[] x) {
for (int i = 0; i < x.length; i++) {
for (int j = i + 1; j < x.length; j++) {
if (x[i] > x[j]) {
int temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 选择排序
public static void xuanZe(int[] x) {
for (int i = 0; i < x.length; i++) {
int lowerIndex = i;
// 找出最小的一个索引
for (int j = i + 1; j < x.length; j++) {
if (x[j] < x[lowerIndex]) {
lowerIndex = j;
}
}
// 交换
int temp = x[i];
x[i] = x[lowerIndex];
x[lowerIndex] = temp;
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 插入排序
public static void chaRu(int[] x) {
for (int i = 1; i < x.length; i++) {// i从一开始,因为第一个数已经是排好序的啦
for (int j = i; j > 0; j--) {
if (x[j] < x[j - 1]) {
int temp = x[j];
x[j] = x[j - 1];
x[j - 1] = temp;
}
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 希尔排序
public static void shell(int[] x) {
// 分组
for (int increment = x.length / 2; increment > 0; increment /= 2) {
// 每个组内排序
for (int i = increment; i < x.length; i++) {
int temp = x[i];
int j = 0;
for (j = i; j >= increment; j -= increment) {
if (temp < x[j - increment]) {
x[j] = x[j - increment];
} else {
break;
}
}
x[j] = temp;
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
}
**
*递归算法,求n的阶乘
*/
public class Recursion {
int result=1;
public int nRecursion(int n) {
if (n > 0) {
result = result * n;
nRecursion(n-1);
}
return result;
}
}
/**
* 求最大公约数和最小公倍数
*/
public class Convention {
/**
* 求两数的最大公约数
*/
int divisor(int m,int n){
if(m%n==0){
return n;
}else{
return divisor(n,m%n);
}
}
/**
* 求两数的最小公倍数
*/
int gbs(int a,int b){
int gbs = 0;
gbs = a*b/divisor(a,b);
return gbs;
}
}
//二分查找法
public class test {
static int bsearch( int[] a, int v ) {
int l, r;
l = 0; r = a.length-1;
while ( l <= r ) {
int m = (l+r)/2;
if ( a[m] == v ) return m;
else if ( a[m] > v )
r = m-1;
else if ( a[m] < v )
l = m+1;
}
return -1;
}
----------------------------------------------
原文引用地址:http://yangl.iteye.com/blog/264627,感谢作者的辛勤劳动
分享到:
相关推荐
java类实现数组的冒泡选择插入希尔等五种排序扫描.pdf
Java数组排序总结(冒泡_选择_插入_希尔)__递归算法的复杂度,实用
易语言数组排序算法集合源码,数组排序算法集合,排序程序,冒泡排序,改冒泡法,双向泡排序,双响泡排序,直接插入排序,地精排序,地精排序2,地精排序3,二分排序,选择排序,梳子排序,希尔排序,快速排序
java数组排序的思想,过程和代码实现。多种数组排序的方法,主要有冒泡排序,堆排序,插入排序, 归并操作(merge), 归并操作(merge),选择排序,希尔排序。
java中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法(希尔排序(Shell Sort)是插入排序的一种),下面是一些示例,需要的朋友可以参考下
c#实现数组排序,包括冒泡排序法、插入排序法、选择排序法、希尔排序法、快速排序法
1.插入排序(直接插入排序、折半插入排序、希尔排序); 2.交换排序(冒泡泡排序、快速排序); 3.选择排序(直接选择排序、堆排序); 4.归并排序;5.基数排序。
数组的排序源代码 一维或是二维数组 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现
数组下标从0开始的排序,其中包含了各种对数组排序的方法,有插入排序(直接插入排序、希尔排序),交换排序(起泡排序、快速排序),选择排序(简单选择排序,堆排序(另外写))、归并排序(递归,非递归)。
数组下标从1开始的排序,其中包含了各种对数组排序的方法,有插入排序(直接插入排序、希尔排序),交换排序(起泡排序、快速排序),选择排序(简单选择排序,堆排序)、归并排序(递归,非递归)。
C语言中常见的排序算法包括归并排序、选择排序、直接插入排序、希尔排序、冒泡排序、快速排序、堆排序以及顺序查找和二分查找。这些排序算法各有特点,在不同情况下有着不同的应用场景和性能表现。 归并排序(Merge...
列举五种java数组中常用的排序方法:快速排序、冒泡排序、选择排序、插入排序、希尔排序
void Bubble_Sort(SqList &L)// it's coming up 冒泡排序(上浮) { int i,j; int flag=1; // to flag the record whethe needs to exchange ,1 is need. i=1; while ( i) { flag=0; for (j=1; j; j++) {...
c语言各种排序算法,冒泡,排序,希尔,插入,快速等
常用数组排序算法 1. 2. 3.publicclassSortAll{ 4. 5./** 6.*冒泡排序,选择排序,插入排序,希尔(Shell),快速排序排序Java的实现 */ 7.publicstaticvoidmain(String[]args){ 8.int[]i={1,5,6,12,4,9,3,23,39,403...
本项目用C++中实现了冒泡排序、插入排序、堆排序、希尔排序、归并排序、基数排序、选择排序、桶排序、快速排序
选择排序,插入排序,希尔排序,堆排序,快速排序,冒泡排序,性能比较。 对于一个随机的数组,可以知道排序所需的比较次数和移动次数。用c++面向对象构建。
本文给大家汇总了一下javascript的数组排序算法,包括冒泡排序、快速排序、插入排序、希尔排序,希望对大家熟悉javascript数组排序能够有所帮助。
Java各种排序算法集合: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(箱排序、基数排序)