查找与排序 In Java

来源:互联网 发布:淘宝的地址怎么填 编辑:程序博客网 时间:2024/05/20 04:46

直接记录一段代码

package searchandsort;public class SortingAndSearch<T extends Comparable<T>> {/** * 线性查找 * @param data 数组对象  * @param min 起始索引 * @param max 结束索引 * @param target 查找目标 * @return 是否查找到 */public  boolean linearSearch(T[] data, int min, int max, T target) {int index = min;;boolean found = false;while (!found && index <= max) {if (data[index].compareTo(target) == 0) {found = true;break;}index++;}return found;}//二分查找public  boolean binarySearch(T[] data, int min, int max, T target) {boolean found = false;int mid = (max + min) / 2; //中间if (data[mid].compareTo(target) == 0) { //找到了found = true;} else if (data[mid].compareTo(target) > 0) {if (min <= mid - 1) {found = binarySearch(data, min, mid-1, target); //左边递归}} else {if (mid + 1 <= max) {found = binarySearch(data, mid+1, max, target); //左边递归}}//1  4  1 1return found;}//选择排序public void selectionSort(T[] data) {int min, len = data.length;T temp;for (int index = 0; index < len - 1; index++) {min = index;for (int scan = index + 1; scan < len; scan++) {if (data[scan].compareTo(data[min]) < 0) {min = scan;}}if (index != min) {temp = data[min];data[min] = data[index];data[index] = temp;}}}static class Contact implements Comparable<Contact> {public String firstName, lastName;public Contact(String firstName, String lastName) {super();this.firstName = firstName;this.lastName = lastName;}@Overridepublic int compareTo(Contact o) {int res; if (lastName.equals(o.lastName)) {res = firstName.compareTo(o.firstName);} else {res = lastName.compareTo(o.lastName);}return res;}@Overridepublic String toString() {return "Contact [firstName=" + firstName + ", lastName=" + lastName+ "]";}}}


0 0