1.冒泡排序
2.选择排序
3.快速排序
4.二分法查找
1.//冒泡排序
从小到大的话, 比较相邻的两个数,交换位置,大的放后面,再相邻的比较,把最大的数字放到最后
public static void main(String[] args) {
int[] n = {1,5,9,6,2,7,10};
int t;
for(int i=0;i<n.length;i++){
for(int j=0;j<n.length-1-i;j++){
if(n[j]<n[j+1]){
t=n[j];
n[j]=n[j+1];
n[j+1] = t;
}
}
}
for(int i=0;i<n.length;i++){
System.out.print(n[i]+" ");
}
}
2.//选择排序
选择一个数,让它和其余的数字进行比较,把最小的方法最前面
int[] n = {1,5,9,6,2,7,10};
int min;
int t;
for (int i = 0; i < n.length-1; i++) {
min = i ;
for (int j =i+1; j<n.length-1; j++) {
if(n[min]>n[j]){
min=j;
}
}
if(min!=i){
t =n[min];
n[min] = n[i];
n[i] = t;
}
}
for(int i=0;i<n.length;i++){
System.out.print(n[i]+" ");
}
3.//快速排序
随机选出一个数,让他和其余的数字进行比较,比他小的放左边,比他大的放右边,这样之后在左边的数字在抽出一个数,在进行比较,右边的一样
4.//二分法查找
前提:数字必须有序
int[] source = {1, 2, 3, 6, 7, 8, 10};
//查找6的索引
int num = 12;//要查找的数字
int start = 0;//查找的起始角标
int end = source.length - 1;//查找的结尾角标
int mid = (start + end) / 2;//查找的中间角标
while (num != source[mid]) {
if (source[mid] > num) {
end = mid - 1;
} else if (source[mid] < num) {
start = mid + 1;
}
//防止死循环
if (start>end){
mid=-1;// -1代表没有这个数字
break;
}
mid = (start + end) / 2;
}
// 循环结束的时候,mid的值即为要查找的角标值
for (int i = 0; i < source.length; i++) {
System.out.print(source[i]+" ");
}