韩顺平 java笔记 第17讲 第18讲 排序 查找

1.排序分类

(1)内部排序

交换式排序 选择式排序 (选择排序法、堆排序法)插入式排序

(2)外部排序

合并排序 直接合并排序法

2.交换式排序

(1)冒泡排序

79 56 90 4 32 27 16 88 35

90 79 56 88 4 32 27 16 35

90 88 79 56 35 4 32 27 16

90 88 79 56 35 32 4 27 16

90 88 79 56 35 32 27 4 16

90 88 79 56 35 32 27 16 4

90 88 79 56 35 32 27 16 4

public class Demo{

public static void main(String[] args){

int arr[] = {1,6,0,-1,9,-100,90};

Bubble bubble = new Bubble();

bubble.sort(arr);

for(int i = 0;i<arr.length;i++){

System.out.println(arr[i] + " ");

}

}

for(int ij= 0;j<arr.length;j++){

System.out.print(arr[j] + " ");

}

}

class Bubble{

public void Sort(int arr[]){

int temp = 0;

for(int i=0;i<arr.length-1;i++){

for(int j=0;j<arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

}

}

}

(2)快速排序法

3.插入式排序

(1)插入排序法

(2)希尔排序法

(3)二叉树排序法

4.查找

(1)顺序查找

(2)二分查找

思路:找到数组的中间数(midVal),和你要查找的数finalVal进行比较,如果midVal>findVal,则说明findVal在数的左边,

就把该数组二分。

class BinaryFind{

public void find (int leftIndex,int rightIndex,int val,int arr[]){

int midIndex = (rightIndex+leftIndex)/2;

int midVal = arr[midIndex];

if(rightIndex >= leftIndex){

if(midVal > val){

find (leftIndex,midIndex-1,val,arr);

}else if (midVal <val){

find (midIndex +1,rightIndex,val,arr);

}else if (midVal == val){

System.out.println(“找到下标”+midIndex);

}

}

}

}

相关推荐