Java实现排序算法
class Sort {
int[] data;
int length;
Sort(int length) {
data = new int[length];
Random r = new Random();
for (int i = 0; i < length; i++)
data[i] = r.nextInt(20);
}
Sort() {
data = new int[]{9, 4, 6, 8, 3, 10, 10, 6, 9};
}
private void swap(int[] data, int i, int j) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
public void bubbleSort() {
}
public void quickSort(int[] data, int start, int end) {
if (start >= end)
return;
int pivot = data[start], i = start, j = end;
while (true) {
while (data[j] >= pivot && i < j)
j--;
while (data[i] <= pivot && i < j)
i++;
if (i < j)
swap(data, i, j);
else
{
swap(data, start, j);
break;
}
}
quickSort(data, start, j - 1);
quickSort(data, j + 1, end);
}
public static void main(String[] args) {
Sort s = new Sort();
System.out.println(Arrays.toString(s.data));
s.quickSort(s.data, 0, s.data.length - 1);
System.out.println(Arrays.toString(s.data));
}
}
二分查找
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
Arrays.sort(arr);
for(int i=1; i<=10; i++)
System.out.println("下标为:" + binarySearch(arr,i));
}
static int binarySearch(int[] arr, int k){
int low = 0, high = arr.length - 1;
while(low <= high){
int mid = low + (high - low) / 2;
if(arr[mid] == k)
return mid;
else if(arr[mid] < k)
low = mid + 1;
else
high = mid - 1;
}
return -1;
}
}