冒泡排序
如升序的冒泡排序 每次从头开始比较 比较相邻的两个元素 如果前者大于后者 就交换它们的位置
在这一轮比较结束后 最大的元素会放在最终的位置上
冒牌排序具有稳定性
public class BubbleSort { //冒泡排序
public static void main(String[] args) {
int[] arr = new int[]{2,5,7,10,21,33,56,87,99};
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]){ //如果前一个元素大于后一个元素,就交换二者的位置
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("得到升序序列:");
for(int i = 0 ; i < arr.length ; i++) //打印
System.out.print(arr[i]+" ");
}
选择排序
每次从待排序序列中取出一个元素 插入到有序序列中
选择排序不稳定
public class XuanZeSort { //选择排序 每轮把一个最小的元素加入到有序序列中
public static void Sort(int[] A){ //选择排序的方法
for(int i = 0 ; i < A.length ; i++){ //初始设置下标为i的元素是最小的
int min = i;
for(int j = i + 1; j < A.length; j++){ //遍历下标为i的元素之后的所有元素
if(A[min] > A[j]) //如果有更小的元素,就更改min的值
min = j;
}
if(min != i){ //在遍历完一轮后,如果min的值发生了变化,就说明找到了更小的值 交换位置
int temp = A[min];
A[min] = A[i];
A[i] = temp;
}
}
}
public static void main(String[] args) {
int[] arr = new int[]{44 , 23 , 12 , 8 , 2 , 50 , 100 , 23 , 45};
Sort(arr);
for(int i = 0; i < arr.length; i++)
System.out.print(arr[i]+" "); //得到升序序列 2 8 12 23 23 44 45 50 100
}
顺序查找
就是遍历数组,找到想要查找的关键字,并返回其索引值
public class ShunXu_Search {
public static int Search(int[] A,int target){ //顺序查找的方法
for(int i = 0;i < A.length;i++){ //如果查找到想要的元素,就返回其索引值
if(A[i] == target)
return i;
}
return -1; //否则返回-1
}
public static void main(String[] args) {
int[] arr = new int[]{23,45,78,88,99,102,235,233,1,24,77};
int Index = Search(arr, 99);
System.out.println("索引为:"+Index);
}
二分查找(折半查找)
只适用于顺序表
二分查找是每次只选择一半的数据进行查找,具有较好的性能
public class Binary_Search { //二分查找 只能用于有序表
public static int Binary(int[] A,int key){
int low = 0,high = A.length - 1;
while(low <= high){
int mid = (low + high) / 2;
if(A[mid] == key)
return mid;
else if(A[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
return -1;
}
public static void main(String[] args) {
int[] arr = new int[]{1,4,6,10,23,25,33,40,51,54,57,80,99,100};
int Index = Binary(arr, 10);
System.out.println("索引为:"+Index);
}