数组中的几种排序法(冒泡,选择,插入,希尔)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 数组中的几种排序法(冒泡,选择,插入,希尔)

数组中的几种排序法(冒泡,选择,插入,希尔)

 2013/10/2 13:05:44  MNTMs  程序员俱乐部  我要评论(0)
  • 摘要:package数组的几种排序方法;publicclassSortArray{//程序入口:测试冒泡,选择,插入,希尔排序方式;publicstaticvoidmain(Stringargs[]){//取得要排序的数组int[]srcA=createSrcArray(5);System.out.println("冒泡排序前数组中的顺序的值如下:");printArray(srcA);System.out.println();System.out.println("冒泡排序的结果:")
  • 标签:

package 数组的几种排序方法;

public class SortArray {
?//程序入口:测试冒泡,选择,插入,希尔排序方式;
??? public static void main(String args[]) {
??? ?//取得要排序的数组
??? ?int[] srcA = createSrcArray(5);
??? ?System.out.println("冒泡排序前数组中的顺序的值如下:");
??? ?printArray(srcA);
??? ?System.out.println();
??? ?System.out.println("冒泡排序的结果:");
??? ?int[] tem=maopao(srcA);
??? ?printArray(tem);
??? ?System.out.println();
??? ?
??????? srcA = createSrcArray(6);
??? ?System.out.println("选择排序前数组中的顺序的值如下:");
??? ?printArray(srcA);
??? ?System.out.println();
??? ?System.out.println("选择排序的结果:");
??????? tem=xuanZe(srcA);
??? ?printArray(tem);
??? ?System.out.println();
??? ?
??? ?srcA = createSrcArray(7);
??? ?System.out.println("插入排序前数组中的顺序的值如下:");
??? ?printArray(srcA);
??? ?System.out.println();
??? ?System.out.println("插入排序的结果:");
??????? tem=caRu(srcA);
??? ?printArray(tem);
??? ?System.out.println();
??? ?
??? ?srcA = createSrcArray(8);
??? ?System.out.println("希尔排序前数组中的顺序的值如下:");
??? ?printArray(srcA);
??? ?System.out.println();
??? ?System.out.println("希尔排序的结果:");
??????? tem=shell(srcA);
??? ?printArray(tem);
??? ?
??? ?
??? }
???
??? //生产一个乱序的,指定长度的原始数组
??? public static int[] createSrcArray(int len) {
??? ?//初始化要排序的数组中的值
??? ?int[] base = new int[len];
??? ?for(int i=0;i<base.length;i++) {
??? ??//创建一个随机对象
??? ??java.util.Random random = new java.util.Random();
??? ??//调用随机对象,每次循环时生成一个0-100的随机数
??? ??int value = random.nextInt(100);
??? ??//给数组中指定位置上添上随机数:
??? ??base[i] = value;
??? ?}
??? ?return base;?
??? }
???
??? //打印数组中的元素
??? public static void printArray(int[] ia) {
??? ?//如果要打印的数组为null,则不打印:
??? ?if(ia==null) {
??? ??return;
??? ?}
??? ?for(int i=0;i<ia.length;i++) {
??? ??System.out.print("? "+ia[i]);
??? ?}
??? ?System.out.print("");
??? }
???
??? //冒泡排序
??? public static int[] 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;
??? ???}
??? ??}
??? ?}
??? ?return x;
??? }
???
???
??? //选择排序
??? public static int[] 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;
??? ?}
??? ?return x;
??? }
??? //插入排序
??? public static int[] caRu(int[] x) {
??? ?for(int i=1;i<x.length;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;
??? ???}
??? ??}
??? ?}
??? ?return x;
??? }
???
??? //希尔排序
??? public static int[] 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;
??? ??}?
??? ?}
??? ?return x;
??? }
}

输出结果:

冒泡排序前数组中的顺序的值如下:
? 28? 93? 12? 99? 6
冒泡排序的结果:
? 6? 12? 28? 93? 99
选择排序前数组中的顺序的值如下:
? 50? 49? 30? 72? 10? 4
选择排序的结果:
? 4? 10? 30? 49? 50? 72
插入排序前数组中的顺序的值如下:
? 43? 3? 8? 96? 20? 27? 56
插入排序的结果:
? 3? 8? 20? 27? 43? 56? 96
希尔排序前数组中的顺序的值如下:
? 79? 10? 13? 53? 7? 27? 0? 18
希尔排序的结果:
? 0? 7? 10? 13? 18? 27? 53? 79

  • 相关文章
发表评论
用户名: 匿名