Java冒泡排序,插入排序,选择排序

冒泡排序:

  1. package com.zyg.test.sort;  
  2. //博客:http://blog.csdn.net/m_changgong  
  3. public class BubbleSort {  
  4.     public static void main(String[] args) {  
  5.         int[] array = {10,5,7,12};  
  6.         System.out.print("排序前;");  
  7.         printArray(array);  
  8.   
  9.         bubbleAscSort(array);  
  10.         bubbleDescSort(array);  
  11.     }  
  12.       
  13.     /** 
  14.      * 冒泡升序排序 
  15.      * @param array 
  16.      */  
  17.     public static void bubbleAscSort(int[] array){  
  18.         int length = array.length;  
  19.         int temp=0;  
  20.         for(int i=0;i<length-1;i++){  
  21.             for(int j=0;j<length-i-1;j++){  
  22.                 if(array[j+1]<array[j]){  
  23.                     temp = array[j];  
  24.                     array[j] = array[j+1];  
  25.                     array[j+1] = temp;  
  26.                 }  
  27.             }  
  28.         }  
  29.           
  30.         System.out.println();  
  31.         System.out.print("升序排序后;");  
  32.         printArray(array);  
  33.     }  
  34.       
  35.     /** 
  36.      * 冒泡降序排序 
  37.      * @param array 
  38.      */  
  39.     public static void bubbleDescSort(int[] array){  
  40.         int length = array.length;  
  41.         int temp=0;  
  42.         for(int i=0;i<length-1;i++){  
  43.             for(int j=0;j<length-i-1;j++){  
  44.                 if(array[j+1]>array[j]){  
  45.                     temp = array[j];  
  46.                     array[j] = array[j+1];  
  47.                     array[j+1] = temp;  
  48.                 }  
  49.             }  
  50.         }  
  51.           
  52.         System.out.println();  
  53.         System.out.print("降序排序后;");  
  54.         printArray(array);  
  55.     }  
  56.       
  57.     public static void printArray(int[] array){  
  58.         int length = array.length;  
  59.         for(int i=0;i<length;i++){  
  60.             System.out.print(array[i]);  
  61.             if(i!=length-1){  
  62.                 System.out.print(",");  
  63.             }  
  64.         }  
  65.     }  
  66. }  
package com.zyg.test.sort;
//博客:http://blog.csdn.net/m_changgong
public class BubbleSort {
	public static void main(String[] args) {
		int[] array = {10,5,7,12};
		System.out.print("排序前;");
		printArray(array);

		bubbleAscSort(array);
		bubbleDescSort(array);
	}
	
	/**
	 * 冒泡升序排序
	 * @param array
	 */
	public static void bubbleAscSort(int[] array){
		int length = array.length;
		int temp=0;
		for(int i=0;i<length-1;i++){
			for(int j=0;j<length-i-1;j++){
				if(array[j+1]<array[j]){
					temp = array[j];
					array[j] = array[j+1];
					array[j+1] = temp;
				}
			}
		}
		
		System.out.println();
		System.out.print("升序排序后;");
		printArray(array);
	}
	
	/**
	 * 冒泡降序排序
	 * @param array
	 */
	public static void bubbleDescSort(int[] array){
		int length = array.length;
		int temp=0;
		for(int i=0;i<length-1;i++){
			for(int j=0;j<length-i-1;j++){
				if(array[j+1]>array[j]){
					temp = array[j];
					array[j] = array[j+1];
					array[j+1] = temp;
				}
			}
		}
		
		System.out.println();
		System.out.print("降序排序后;");
		printArray(array);
	}
	
	public static void printArray(int[] array){
		int length = array.length;
		for(int i=0;i<length;i++){
			System.out.print(array[i]);
			if(i!=length-1){
				System.out.print(",");
			}
		}
	}
}


插入排序(Insertion Sort)算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间

  1. package com.zyg.test.sort;  
  2.   
  3. public class InsertSort {  
  4.     public static void main(String[] args) {  
  5.         int[] array = {2,3,1,8,6};  
  6.         System.out.print("排序前;");  
  7.         printArray(array);  
  8.   
  9.         insertAscSort(array);  
  10.         insertDescSort(array);  
  11.     }  
  12.       
  13.     /** 
  14.      * 插入升序排序 
  15.      * @param array 
  16.      */  
  17.     public static void insertAscSort(int[] array){  
  18.         int length = array.length;  
  19.         for(int out = 1;out<length;out++){  
  20.             int temp = array[out];  
  21.             int in = out;  
  22.             while(in>0 && array[in-1]>temp){  
  23.                 array[in] = array[in-1];  
  24.                 --in;  
  25.             }  
  26.             array[in]=temp;  
  27.         }  
  28.           
  29.         System.out.println();  
  30.         System.out.print("升序排序后;");  
  31.         printArray(array);  
  32.     }  
  33.       
  34.     /** 
  35.      * 插入降序排序 
  36.      * @param array 
  37.      */  
  38.     public static void insertDescSort(int[] array){  
  39.         int length = array.length;  
  40.         for(int out = 1;out<length;out++){  
  41.             int temp = array[out];  
  42.             int in = out;  
  43.             while(in>0 && array[in-1]<temp){  
  44.                 array[in] = array[in-1];  
  45.                 --in;  
  46.             }  
  47.             array[in]=temp;  
  48.         }  
  49.           
  50.         System.out.println();  
  51.         System.out.print("升序排序后;");  
  52.         printArray(array);  
  53.     }  
  54.       
  55.     public static void printArray(int[] array){  
  56.         int length = array.length;  
  57.         for(int i=0;i<length;i++){  
  58.             System.out.print(array[i]);  
  59.             if(i!=length-1){  
  60.                 System.out.print(",");  
  61.             }  
  62.         }  
  63.     }  
  64. }  
package com.zyg.test.sort;

public class InsertSort {
	public static void main(String[] args) {
		int[] array = {2,3,1,8,6};
		System.out.print("排序前;");
		printArray(array);

		insertAscSort(array);
		insertDescSort(array);
	}
	
	/**
	 * 插入升序排序
	 * @param array
	 */
	public static void insertAscSort(int[] array){
		int length = array.length;
		for(int out = 1;out<length;out++){
			int temp = array[out];
			int in = out;
			while(in>0 && array[in-1]>temp){
				array[in] = array[in-1];
				--in;
			}
			array[in]=temp;
		}
		
		System.out.println();
		System.out.print("升序排序后;");
		printArray(array);
	}
	
	/**
	 * 插入降序排序
	 * @param array
	 */
	public static void insertDescSort(int[] array){
		int length = array.length;
		for(int out = 1;out<length;out++){
			int temp = array[out];
			int in = out;
			while(in>0 && array[in-1]<temp){
				array[in] = array[in-1];
				--in;
			}
			array[in]=temp;
		}
		
		System.out.println();
		System.out.print("升序排序后;");
		printArray(array);
	}
	
	public static void printArray(int[] array){
		int length = array.length;
		for(int i=0;i<length;i++){
			System.out.print(array[i]);
			if(i!=length-1){
				System.out.print(",");
			}
		}
	}
}

选择排序 (Selection sort)是一种简单直观的 排序算法 。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

  1. package com.zyg.test.sort;  
  2.   
  3. public class SelectSort {  
  4.     public static void main(String[] args) {  
  5.         int[] array = {23,10,7,12,5,1};  
  6.         System.out.print("排序前;");  
  7.         printArray(array);  
  8.   
  9.         selectAscSort(array);  
  10.         selectDescSort(array);  
  11.     }  
  12.       
  13.     /** 
  14.      * 选择升序排序 
  15.      * @param array 
  16.      */  
  17.     public static void selectAscSort(int[] array){  
  18.         int length = array.length;  
  19.         int min = array[0];  
  20.         int minIdx = 0;  
  21.         for(int i=0;i<length-1;i++){  
  22.             for(int j=i+1;j<length;j++){  
  23.                 if(array[j]<min){//将比较符号改为>即是降序排序算法  
  24.                     min = array[j];  
  25.                     minIdx = j;  
  26.                 }  
  27.             }  
  28.             array[minIdx]= array[i];  
  29.             array[i] = min;  
  30.             //重置min、minIdx值  
  31.             min = array[i+1];  
  32.             minIdx = i+1;  
  33.         }  
  34.           
  35.         System.out.println();  
  36.         System.out.print("升序排序后;");  
  37.         printArray(array);  
  38.     }  
  39.       
  40.     /** 
  41.      * 选择降序排序 
  42.      * @param array 
  43.      */  
  44.     public static void selectDescSort(int[] array){  
  45.         int length = array.length;  
  46.         int max = array[0];  
  47.         int maxIdx = 0;  
  48.         for(int i=0;i<length-1;i++){  
  49.             for(int j=i;j<length;j++){  
  50.                 if(array[j]>max){//将比较符号改为<即是升序排序算法  
  51.                     max = array[j];  
  52.                     maxIdx = j;  
  53.                 }  
  54.             }  
  55.             array[maxIdx]= array[i];  
  56.             array[i] = max;  
  57.             //重置max、maxIdx值  
  58.             max = array[i+1];  
  59.             maxIdx = i+1;  
  60.         }  
  61.           
  62.         System.out.println();  
  63.         System.out.print("降序排序后;");  
  64.         printArray(array);  
  65.     }  
  66.       
  67.     public static void printArray(int[] array){  
  68.         int length = array.length;  
  69.         for(int i=0;i<length;i++){  
  70.             System.out.print(array[i]);  
  71.             if(i!=length-1){  
  72.                 System.out.print(",");  
  73.             }  
  74.         }  
  75.     }  
  76. }  
package com.zyg.test.sort;

public class SelectSort {
	public static void main(String[] args) {
		int[] array = {23,10,7,12,5,1};
		System.out.print("排序前;");
		printArray(array);

		selectAscSort(array);
		selectDescSort(array);
	}
	
	/**
	 * 选择升序排序
	 * @param array
	 */
	public static void selectAscSort(int[] array){
		int length = array.length;
		int min = array[0];
		int minIdx = 0;
		for(int i=0;i<length-1;i++){
			for(int j=i+1;j<length;j++){
				if(array[j]<min){//将比较符号改为>即是降序排序算法
					min = array[j];
					minIdx = j;
				}
			}
			array[minIdx]= array[i];
			array[i] = min;
			//重置min、minIdx值
			min = array[i+1];
			minIdx = i+1;
		}
		
		System.out.println();
		System.out.print("升序排序后;");
		printArray(array);
	}
	
	/**
	 * 选择降序排序
	 * @param array
	 */
	public static void selectDescSort(int[] array){
		int length = array.length;
		int max = array[0];
		int maxIdx = 0;
		for(int i=0;i<length-1;i++){
			for(int j=i;j<length;j++){
				if(array[j]>max){//将比较符号改为<即是升序排序算法
					max = array[j];
					maxIdx = j;
				}
			}
			array[maxIdx]= array[i];
			array[i] = max;
			//重置max、maxIdx值
			max = array[i+1];
			maxIdx = i+1;
		}
		
		System.out.println();
		System.out.print("降序排序后;");
		printArray(array);
	}
	
	public static void printArray(int[] array){
		int length = array.length;
		for(int i=0;i<length;i++){
			System.out.print(array[i]);
			if(i!=length-1){
				System.out.print(",");
			}
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值