`
dsea
  • 浏览: 43909 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java 排序(一)

阅读更多
冒泡排序:扫描整个表,比较相邻元素,如果它们的相互次序不正确就交换它们.执行的结果是将最大值"起泡"到表中的最后位置,这也正是它在有序表中的最后位置.然后再次扫描表,将第二个最大值起泡到最终位置.继续这个过程,直到所有的元素都排序正确.
public static void bubbleSort(Comparable[] data) {
		int position, scan;
		for(position = data.length-1; position >= 0 ; position--) {
			for(scan = 0; scan <= position-1; scan++) {
				if(data[scan].compareTo(data[scan+1]) > 0)
					swap(data, scan, scan+1);
			}
		}
	}



选择排序:扫描整个表,找到最小值.将这个值与表中第一个位置的值想交换.扫描余下的表(除第一个元素之外的所有制),超找最小值,将这个值与表第二个位置的值交换.如此重 复这个过程,完成时,表中排序完毕
public static void selectionSort(Comparable[] data) {
		int min;
		for(int index = 0; index < data.length-1; index++) {
			min = index;
			for(int scan = index + 1; scan < data.length; scan++) {
				if(data[scan].compareTo(data[min]) < 0)
					min = scan;
			}
			swap(data, min, index);
			
		}
	}


插入排序:对表中的最前两个元素排序,必要时进行交换,将表中第三个值插入到前两个(已排序)值 组成的序列中的合适位置.然后将第四个值插入到表中前三个值中的合适位置.每次插入时,已有序的子序列中的元素个数增加一个.继续这个过程直到所有元素有序为止.
	public static void insertSort(Comparable[] data) {
		for(int index = 0; index < data.length; index++) {
			Comparable key = data[index];
			int position = index;
			//把大的值往右边移动
			while(position > 0 && data[position-1].compareTo(key) > 0) {
				data[position] = data[position-1];
				position--;
			}
			data[position] = key;
		}
	}



//交换
private static void swap(Comparable[] data, int index1, int index2) {
		Comparable temp = data[index1];
		data[index1] = data[index2];
		data[index2] = temp;
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics