Java排序[理解]+冒泡+二分查找

/**
 * 冒泡
 * @author yangm
 *
 */
// 冒泡排序:
class BubbleSort {
	public static void sort(int arr[]) {
		int len = arr.length - 1, count = 0;
		for (int i = 0; i < len; i++) { // 由数组长度控制总次数
			for (int j = 0; j < len -i; j++) { 
				count++;
				if (arr[j] > arr[j + 1]) { // 不能用j++,会改变J的值。
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
			
				}
			}
		} // end out-for
		System.out.println("count:" + count);

		ClassicSortDriver.showArr(arr);
	}// end method

}// end class
/**
 * 选择排序自己理解:
 * -从乱序数组里面选择一个数与未排序数组里面每个元素比较大小,记住最小元素的下标
 * 内层循环结束,交换未排序数组第一个元素与最小元素。
 * 外层循环从第二个元素继续,得到第二个最小元素放在排序数组的后面,即与未排序数组第一个元素交换
 * @author yangm
 *
 */
class SelectSort{
	public static void sort(int arr[]) {
		System.out.println("选择排序:");
		int len = arr.length-1, count = 0;
		for(int i = 0; ii; j--) {
				count ++;
				if(arr[j]

个人感觉以上者两个排序方法是逻辑上最容易的理解的两个排序了。没毛病~
【后面理解逻辑了再写。这个东西和钱一样应该是多多益善!吧!】

/**
 * 插入排序: 第一个与第二相比,小的放前面。
 *  第二个与第三相比,小的放前面。新的第二个与第一个相比,小的放前面。
 * 第三个与第四个相比,小的放前面。新的第三个与第二个相比,小的放前面。如果位置正确。后面不用执行。否则同上 。。。。。
 */

class insertSort {

	public static void sort(int arr[]) {
		System.out.println("插入排序:");
		int count = 0;
		for(int i = 1; i < arr.length; i++) {//由数组长度控制外循环次数
			for(int j = i; j > 0;j--) {
				count++;
				if(arr[j]

Java排序[理解]+冒泡+二分查找_第1张图片


二分查找。

/**
 * 二分法查找,理解了还是很好写的。
 * @author yangm
 *
 */
public static int binarySearch(int arr[], int key){
	int top = 0, bottom = arr.length - 1;
	while (top<=bottom){
		int mid = (top + bottom) / 2; //折半
		if(arr[mid] < key) {
			top = mid + 1;
		}else if(arr[mid] > key){
			bottom = mid - 1;
		}else return mid; 
	}
	return -1;//不存在返回-1
}

递归方法:

/**
 * 二分法查找,递归方法:
 * @author yangm
 */
public static int binarySearch(int arr[], int top, int bottom, int key){
	while (top<=bottom){
		int mid = (top + bottom) / 2; //折半
		if(arr[mid] < key) {
			return binarySeach(arr,mid+1,bottom,key);
		}else if(arr[mid] > key){
			return binarySeach(arr,top,mid-1,key);
		}else return mid; 
	}
	return -1;//不存在返回-1
}

你可能感兴趣的:(JAVA,java排序基础算法,优化冒泡,二分查找)