您的位置:首页 > 其它

几种常见的排序算法

2013-09-16 10:31 176 查看
选择排序

// 选择排序算法
	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;
				}
			}
		}
	}

插入排序

//插入排序
	private 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中所有的局部变量都是在栈内存中分配的(包括方法中声明的变量、方法的参数)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: