常用的几种简单的内部排序方法

这几种排序方法分别为:冒泡排序,选择排序,插入排序,快速排序

1.冒泡排序:




   思想:简单的说就是想办法把一堆数据中最大的数不停地往后边排。

   代码:

class Bubble{
	
//	/**
//	 * 测试方法
//	 */
//	public void test(int i){
//		i++;
//		System.out.println(i);
//	}
	
	public void sort(int arr[]){
		int temp = 0;//设置这个变量的目的是为了实现数值的交换
		
		//冒泡排序
		for(int i=0;i
    
    
     
      arr[j+1]){
					//交换
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
//		//遍历数组输出最后结果
//				for(int i=0;i
     
      
  

2.选择排序:

   思想:在给定的一堆数据中找到最小的(或者最大的)数跟数据的第一个数交换(最后一个数交换),然后第二次再在排好的数据中(不要把排好的第一个数算在其中)找最小的(或者最大的)数跟数据的的第二个数(倒数第二个数)交换,以此类推,不断的进行下去,最后就OK了。
   代码:
/**
 * 选择排序类
 */
class Select{
	public void sort(int arr[]){
		int temp = 0;
		for(int j=0;j
     
     
      
      arr[k]){
					//修改最小
					min = arr[k];
					minIndex = k;
				}
			}//当退出for就找到了这次的最小值
			temp = arr[j]; 
			arr[j] = arr[minIndex];
			arr[minIndex] = temp;
		}
//		//遍历数组 输出最后结果
//		for(int i=0;i
      
       
   
3.插入排序:

   思想:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素(那肯定是有序的),无序表中有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。
    代码:
/**
 * 插入排序类
 */
class InsertSort{
	//插入排序方法
	public void sort(int arr[]){
		for(int i=0;i
      
      
       
       =0&&insertVal
       
       
      
      
4.快速排序:
    思想:通过一趟排序将要排序的数据分隔成独立的两部分,其中一部分的所有的数据都要比另一部分的所有的数据都要小,然后再对于这两部分分别进行以上的操作,以此达到整个数据 变成有序的数据。简单地说就是在一堆数据中找到这些数据中中间的那个数,然后把比这个中间数大的放在中间数的右边,比它小的数放在中间数的左边,然后再次递归一样的对于左边的数,和右边的数进行以上操作。
    代码:
**
 * 快速排序类
 */
class QuickSort{
	//快速排序方法
	public void sort(int left,int right,int [] array){//传进的是数组最左边的下标,数组最右边的下标,数组
		int l = left;
		int r = right;
		int pivot = array[(left+right)/2];
		int temp = 0;
		
		while(l
       
       
        
        pivot) r--;
			
			if(l>=r) break;
			
			temp = array[l];
			array[l] = array[r];
			array[r] = temp;
			
			if(array[l]==pivot) --r;
			if(array[r]==pivot) ++l;
		}
		/*System.out.println("the current array is");
		for(int i=0;i<5;i++){
			System.out.print(" "+array[i]);
		}*/
		
		if(l==r){
			l++;
			r--;
		}
		if(left
        
        
         
         l) sort(l,right,array);
	}
}

        
        
       
       


最后,总体上分析一下这四种排序的效率:
    速度(由小到大):
       冒泡,选择,插入,快速
    并且这些排序会随着数据量的增大,速度优势会更加明显。

     快速排序速度比较快的原因是:前三种排序多是单个进程进行的,而快速排序是多进      程来实现排序的。但是快速排序进行排序时会占用特别多的内存(当你运用快速排序对一个特别大的数组进行排序时,你会发现你的内存突然间就上去了)。所以说快速排序的效率并不高,因为它会占用特别多的内存和CPU。

注意:在排序时,如果数据量比较大的话,就不要打印了,因为打印会占用特别多的CPU。







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值