冒泡排序
比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
选择排序
对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),等到循环结束的时候,我们应该找到了最小的那个数的下标了,然后进行判断,如果这个元素的下标不是第一个元素的下标,就让第一个元素跟他交换一下值,这样就找到数组中最小的数了。然后找到数组中第二小的数,让他跟数组中第二个元素交换一下值,以此类推。
插入排序
从数组的第一个元素a[0]开始,将其后一个元素a[1]插入到a[0]的前面或者后面,接着继续这一过程。每次都是将a[i]插入到已经排序好的a[0]~a[i-1]中合适的位置
1 public class Sort{ 2 public static void main(String[] args){ 3 int array[]={12,76,34,66,44,23,88,77,56,99}; 4 System.out.println("待排序数组为:"); 5 for(int arr:array){ 6 System.out.print(arr+" "); 7 } 8 9 //冒泡排序 10 System.out.println("\n"+"冒泡排序(从大到小):"); 11 bubbleSort(array); 12 //选择排序 13 System.out.println("\n"+"选择排序(从小到大):"); 14 selectionSort(array); 15 //选择排序 16 System.out.println("\n"+"插入排序(从小到大):"); 17 insertSort(array); 18 } 19 //冒泡排序 20 public static void bubbleSort(int[] a){ 21 int n=a.length; 22 //i是比较的次数,共比较n-1次 23 for(int i=1;i<n;i++){ 24 //j是进行比较的第一个元素的下标 25 for(int j=0;j<n-1;j++){ 26 if(a[j]<a[j+1]){ 27 int temp=a[j+1]; 28 a[j+1]=a[j]; 29 a[j]=temp; 30 } 31 } 32 } 33 //遍历已排序数组 34 for(int k=0;k<n;k++){ 35 System.out.print(a[k]+" "); 36 } 37 } 38 //选择排序 39 public static void selectionSort(int[] a){ 40 int n=a.length; 41 //i是要交换值得下标, 42 for(int i=0;i<n-1;i++){ 43 //k记录当前最小值的下标 44 int k=i; 45 //从k+1的位置开始寻找最小值的位置 46 for(int j=k+1;j<n;j++){ 47 //从小到大 48 if(a[j]<a[k]){ 49 k=j; 50 } 51 } 52 //如果k不是第一个元素的下标,就让第一个元素跟他交换一下值 53 if(i!=k){ 54 int temp=a[i]; 55 a[i]=a[k]; 56 a[k]=temp; 57 } 58 } 59 //遍历已排序数组 60 for(int k=0;k<n;k++){ 61 System.out.print(a[k]+" "); 62 } 63 } 64 //插入排序 65 public static void insertSort(int[] a){ 66 int n=a.length; 67 //i是待插入位置的下标 68 for(int i=1;i<n;i++){ 69 for(int j=i;j>0;j--){ 70 //从小到大排序 71 if(a[j]<a[j-1]){ 72 int temp=a[j-1]; 73 a[j-1]=a[j]; 74 a[j]=temp; 75 } 76 } 77 } 78 //遍历已排序数组 79 for(int k=0;k<n;k++){ 80 System.out.print(a[k]+" "); 81 } 82 } 83 }
时间: 2024-10-13 07:08:49