`
lianggl2008
  • 浏览: 25554 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

排序查找问题

J# 
阅读更多
package com.strongit;

public class PaiXu {
	
	private int[] data = {11,3,17,1,13,21,10,15,6,4};
	
	public PaiXu() {
		print();
		//quickSort(data,0,data.length-1);
		selectSort(data);
		int pos = binSearch(data,0,data.length-1,13);
		System.out.println("pos="+pos);
	}
	
	//快速排序
	public void quickSort(int[] r,int s,int t) {
		int i = s;
		int j = t;
		if(s < t) {
			int temp = r[s];
			do {
				while(i < j && r[j] >= temp) j--;
				if( i < j) {
					r[i] = r[j];i++;
				}
				while(i < j && r[i] <= temp) i++;
				if(i < j) {
					r[j] = r[i];j--;
				}
			} while(i < j);
			r[j] = temp;
			quickSort(r,s,j-1);
			quickSort(r,j+1,t);
		}
		print();
	}
	
	//选择排序
	public void selectSort(int[] r) {
		int n = r.length;
		int i = 0;
		int j = 0;
		int k = 0;
		int temp = 0;
		for(i = 0; i<n; i++) {
			k = i;
			for(j = i+1; j <n; j++ ) {
				if(r[j] < r[k]) {
					k = j;
				}
			}
			temp = r[i];
			r[i] = r[k];
			r[k] = temp;
		}
		print();
	}
	
	//二分查找
	public int binSearch(int[] r,int low,int height,int k) {
		int mid = 0;
		int i = 0;
		int find = 0;
		while(low <= height && find != 1) {
			mid = (low + height) / 2;
			if(r[mid] < k) {
				low = mid + 1;
			} else if(r[mid] > k) {
				height = mid - 1;
			} else {
				i = mid;
				find = 1;
			}
		}
		if(find != 1) {
			i = -1;
		}
		return i;
	}
	
	public void print() {
		for(int i : data) {
			System.out.print(i+" , ");
		}
		System.out.println();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new PaiXu();
	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics