冒泡、选择、插入、希尔排序

import java.util.Scanner;
//此脚本在大牛的基础上修改完成
public class Test
{   /*   
	·冒泡排序是依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第一个和第二个数,将大数放前,小数放后。如此继续,直至比较最后两个数,将大数放前,小数放后。然后下一行再进行重复操作。
	
	·选择排序是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。
	
	·插入排序(InsertionSort)把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外,而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的正确位置中。
	
	· 希尔排序(ShellSort)是插入排序的一种。基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<……<d2<d1),即所有记录放在同一组中进行直接插入排序为止。
     */
	
	//static int a[]  = new int[10];
	
	//冒泡排序
	public static void Bubblesort(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 = 0; i < x.length; i++) {
	 	  System.out.print(x[i]+" ");
	   }
	   System.out.println();
	   }
    //选择排序
	public static void Selectionsort(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 = 0; i < x.length; i++) {
	 	  System.out.print(x[i]+" ");
	   }
	   System.out.println();
	   }
	//插入排序
    public static void Insertionsort(int x[]){
    	for (int i = 1; i < x.length; i++) {//i从1开始,因为第一个数已经排列好
	          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 = 0; i < x.length; i++) {
	 	  System.out.print(x[i]+" ");
	   }
	   System.out.println();
	}
	//希尔排序
    public static void ShellSort(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 = 0; i < x.length; i++) {
		 	  System.out.print(x[i]+" ");
		}
		System.out.println();
	}
    //对比输出
    public static void All(int x[]){
    	System.out.println("还没有实现");
    }
    
	//接收数据
    public static int[] Receive(){
    	@SuppressWarnings("resource")
		Scanner sc=new Scanner(System.in );
	    System.out.println("请输入一串整数并在输入时用英文逗号隔开:");
	    String inputString=sc.next().toString();
	    String stringArray[]=inputString.split(",");
	    int num[]=new int[stringArray.length];
	    for(int i=0;i<stringArray.length;i++){
	    num[i]=Integer.parseInt(stringArray[i]);
	    //System.out.print(num[i]+" "); 
	    }
        return num;  //函数之间的参数传递      
    }

    //主函数
    public static void main(String[] args)
    {
    	for(@SuppressWarnings("unused")
		int i=0;;i++) {  
    	       System.out.println("---1、冒泡排序---");  
    	       System.out.println("---2、选择排序 ---");  
    	       System.out.println("---3、插入排序 ---");
    	       System.out.println("---4、希尔排序 ---"); 
    	       System.out.println("---5、对比输出 ---"); 
    	       //System.out.println("---5、退出 ---");  
    	       System.out.print("请选择:");  
    	       @SuppressWarnings("resource")
			Scanner sc = new Scanner(System.in); 
    	       int ch = sc.nextInt();  
    	        switch(ch){  
    	        case 1:  
    	            System.out.println("---1、冒泡排序---");
    	            int a[] = Receive();
    	            Bubblesort(a);  
    	            break;  
    	        case 2:  
    	            System.out.println("---2、选择排序---");  
    	            //int b[] = {1,2,3,9,7,0,4,5,6,8};
    	            //Selectionsort(w); 
    	            int b[] = Receive();
    	            Selectionsort(b); 
    	            break;  
    	        case 3:  
    	            System.out.println("---3、插入排序 ---");  
    	            int c[] = Receive();
    	            Insertionsort(c);  
    	            break;  
    	        case 4:  
    	            System.out.println("---4、希尔排序 ---"); 
    	            int d[] = Receive();
    	            ShellSort(d); 
    	            break;
    	        case 5:  
    	            System.out.println("---5、对比输出 ---"); 
    	            int e[] = Receive();
    	            System.out.println("---1、冒泡排序---");
    	            Bubblesort(e);
    	            System.out.println("---2、选择排序---");
    	            Selectionsort(e);
    	            System.out.println("---3、插入排序---");
    	            Insertionsort(e);
    	            System.out.println("---4、希尔排序---");
    	            ShellSort(e);
    	            break;      
    	        }  
    	      }   
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值