public class TestSort {
public static void main(String[] args) {
//int[] nums={20,8,1,15,23};
int[] nums={10,38,65,97,76,13,27,49,78,34,12,64,1};
System.out.println("排序之前");
for (int num : nums) {
System.out.print(num+",");
}
//bubbleSort(nums);
//selectSort2(nums);
//insertSort2(nums);
//Arrays.sort(nums);
//shellSort(nums);
quickSort(nums, 0, nums.length-1);
System.out.println();
System.out.println("排序之后");
for (int num : nums) {
System.out.print(num+",");
}
}
//快速排序 :采用递归分治的思想
public static void quickSort(int[] arr,int start,int end){
int i=start;
int j=end;
int pivot=arr[start];
while(i<j){
//从后向前
while(i<j&&arr[j]>pivot){
j--;
}
arr[i]=arr[j];
i++;
//从前向后
while(i<j&&arr[i]<pivot){
i++;
}
arr[j]=arr[i];
j--;
}
arr[i]=pivot;
//前面有元素
if(i-1>start){
quickSort(arr, start, i-1);
}
//后面又元素
if(j+1<end){
quickSort(arr, j+1, end);
}
}
}
六,二分法查找(二分查找的前提是数据必须有序)
public class TestArray7 {
public static void main(String[] args) {
int[] arr={10,38,65,97,76,13,27,49,78,34,12,64,1};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
int i = binarySearch(arr, 50);
System.out.println(i);
//Arrays.binarySearch(, )
}
public static int binarySearch(int[] arr,int key){
int low=0;
int upper=arr.length-1;
while(low<=upper){
int mid=(low+upper)>>>1;
if(key<arr[mid]){
upper=mid-1;
}else if(key>arr[mid]){
low=mid+1;
}else{
return mid;
}
}
return -1;
}
}
七,杨辉三角
public class Homework16 {
public static void main(String[] args) {
/**
* 8行8列的杨辉三角
*/
int row = 6;//行数
int[][] yanghui = new int[row][row];//6行6列数组
for (int i = 0; i < row; i++){//行
for(int j = 0;j<= i;j++){//列
if (j==0 || j==i){
yanghui[i][j]=1;
}else{
yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j];
}
// System.out.print(yanghui[i][j]+" ");
}
// System.out.println();
}
//等腰输出处理
for (int i = 0; i < row; i++){
int num = row -i;
for(int j = 0;j<= num;j++){
System.out.print(" ");
}
for(int k= 0;k<= i;k++){
System.out.print(yanghui[i][k]+" ");
}
System.out.println();
}
}
}