基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两
相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
实现代码:
import java.lang.String; public class BubbleSort{ public static void main(String[] args) { int[] a ={46,38,97,76,13,27,49,78,34,12,64,1,8}; System.out.println("排序前:"); for(int i=0;i < a.length;i++) { System.out.println(a[i]+" "); } //冒泡排序 for(int i=0; i<a.length-1;i++) { //从头至一直遍历到沉底数前为止 for(int j=0;j<a.length-i-1;j++) { if(a[j]>a[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } System.out.println(); System.out.println("排序之后:"); for(int i=0;i<a.length;i++) { System.out.println(a[i] +" "); } } }
2、选择排序
基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一
个数比较为止。
实现代码:
import java.lang.String; public class SelectOrder{ public static void main(String[] args) { int[] a ={46,38,97,76,13,27,49,78,34,12,64,1,8}; System.out.println("排序前:"); for(int i=0;i < a.length;i++) { System.out.println(a[i]+" "); } //简单选择排序 for(int i=0;i<a.length;i++) { int minVal = a[i]; //最小数的值 int minIndex = i; //最小数的索引 //找最小数的值和其位置 for(int j=i+1;j<a.length;j++) { if(a[j]<minVal) { minVal=a[j]; minIndex=j; } } a[minIndex]=a[i]; //将最小数所在位置的值用a[i]来替换 a[i]=minVal; //将最小值放在a[i]处 } System.out.println(); System.out.println("排序之后:"); for(int i=0;i<a.length;i++) { System.out.println(a[i] +" "); } } }
3、二分查找
基本思想:开始时用第一个数索引与最后一个数索引的和除以2,得到的索引值对应的值与待查找的数作比较,如果大于待查找的数就将最后一个数的索引值减1,然后重新计算第一个数的索引与减1后的数的索引之和除以2对应的值和待查找数比较……
代码实现:
import java.lang.String; public class benaryserch{ public static void main(String[] args) { int[] a={2,12,34,45,52,56,66,79,89}; for(int i=0;i<a.length;i++) { System.out.println(a[i]+" "); } benaryserch s =new benaryserch(); int num=s.search(a,45); System.out.println("二分查找结果"+ num); } public int search(int[] number,int des) { int low=0; int upper=number.length-1; while(low<=upper) { int mid=(low+upper)/2; if(number[mid]<des) low=mid+1; else if(number[mid]>des) upper=mid-1; else return mid; } return -1; } }