转自: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中所有的局部变量都是在栈内存中分配的(包括方法中声明的变量、方法的参数)。