美文网首页
插入排序和冒泡排序

插入排序和冒泡排序

作者: Aluha_f289 | 来源:发表于2019-05-03 21:11 被阅读0次

1、插入排序

package sortBasic;

/**
 *
 * 插入排序的基本思想是:
 *     每步将一个待排序的记录,
 *     按其关键码值的大小插入前面已经排序的文件中适当位置上,
 *     直到全部插入完为止。
 * 相比于选择排序,插入排序的一个优点是提前终止,
 *     不用遍历整个数组,因此,插入排序应该要比选择排序的效率更加的高效
 */
public class InsertionSort {
    // 我们的算法类不允许产生任何实例
    private InsertionSort(){}

    public static void sort(Comparable[] arr) {
        int n = arr.length;
        for (int i = 0; i < n; i++) {
//            // 寻找元素arr[i]合适的插入位置
//            for( int j = i ; j > 0 ; j -- ){
//                if( arr[j].compareTo( arr[j-1] ) < 0 )
//                    swap( arr, j , j-1 );
//                else{
//                    break;
//                }
//
//            }

            // 写法2
//            for( int j = i; j > 0 && arr[j].compareTo(arr[j-1]) < 0 ; j--)
//                swap(arr, j, j-1);
            //写法3 改良方式
            Comparable e = arr[i];
            int j = i;
            for ( ;j > 0 && arr[j-1].compareTo(e) > 0; j--)
                arr[j] = arr[j-1];
            arr[j] = e;
        }
    }

    private static void swap(Object[] arr, int i, int j) {
        Object t = arr[i];
        arr[i] = arr[j];
        arr[j] = t;
    }

    // 测试InsertionSort
    public static void main(String[] args) {
        Integer[] a = {10,9,8,7,6,5,4,3,2,1};
        InsertionSort.sort(a);

        for( int i = 0 ; i < a.length ; i ++ ){
            System.out.print(a[i]);
            System.out.print(' ');
        }
        System.out.println();
        return;
    }
}

2、冒泡排序

/**
 *它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。
 *走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
 */
 public static void bubbleSort(int []arr) {
               int[] arr = {12,23,34,56,56,56,78};
        for(int i =0;i<arr.length-1;i++) { 
            for(int j=0;j<arr.length-i-1;j++) {//-1为了防止溢出
                if(arr[j]>arr[j+1]) {
                    int temp = arr[j];
                     
                    arr[j]=arr[j+1];
                     
                    arr[j+1]=temp;
            }
            }    
        }
    }

相关文章

网友评论

      本文标题:插入排序和冒泡排序

      本文链接:https://www.haomeiwen.com/subject/upnznqtx.html