几种常见的排序算法

转自:http://blog.csdn.net/acm365/article/details/11723677

 

 

// 选择排序算法   
private static void selectionSort(int[] ary) {  
    /** 
     * 选择排序原理:将数组中每个元素与第一个元素比较,如果这个元素小于第一个元素,则交换这两个元素 . 
     * 循环第1条规则,找出最小元素,放于第1个位置 . 经过n-1轮比较完成排序 
     */  
    for (int i = 0; i < ary.length - 1; i++) {  
        for (int j = i + 1; j < ary.length; j++) {  
            if (ary[i] > ary[j]) {  
                // 定义临时变量temp   
                int temp = ary[j];  
                ary[j] = ary[i];  
                ary[i] = temp;  
            }  
        }  
    }  
}  


 

//插入排序   
rivate static void insertSort(int[] ary) {  
/** 
 *将数组分为两部分, 将后部分的第一个逐一与前部分每一个元素比较,在合理位置插入 
 *插入排序算法效率要高于选择排序和冒泡排序 
 */  
for(int i=1;i<ary.length;i++){  
    for(int j=i-1;j>=0;j--){  
        if(ary[j]>ary[j+1]){  
            int temp=ary[j];  
            ary[j]=ary[j+1];  
            ary[j+1]=temp;  
        }  
    }  
}  


 

//冒泡排序
private static int[] bubbleSort(int[] ary) {  
        /** 
         *比较相邻的元素,将小的放到前面。   
         *i的取值范围是: i = 0 ~ <ary.length-1 
       *j的取值范围是: j = 0 ~ <ary.length - i -1 
        *交换步骤伪代码如下: 
          if([j]>[j+1]){ [j]<->[     
         */  
        for(int i=0;i<ary.length-1;i++){  
            for(int j=0;j<ary.length-i-1;j++){  
                if(ary[j]>ary[j+1]){  
                    int temp=ary[j];  
                    ary[j]=ary[j+1];  
                    ary[j+1]=temp;  
                }  
            }  
        }  
        return ary;  
    }  


jdk提供的排序方法Arrays.sort(ary)的效率要比我们之前写的选择排序,冒泡排序效率高。

递归实现原理之前,我们先了解一下栈内存。 栈内存是计算机中的一种数据存储方式,是Java迚程启动时候在内存中开辟的存储空间。
 栈内存的利用方式遵循LIFO(后迚先出)原则
 Java所有局部变量都在栈中分配(压入), 方法的参数也是局部变量, 局部变量在离开作用域时候回收,就是从栈中弹出(删除)。
 Java中所有的局部变量都是在栈内存中分配的(包括方法中声明的变量、方法的参数)。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值