面试笔记---算法

  5月份就要去面试了,把一些可能会考的东西做一下笔记,主要是冒泡排序、插入排序、选择排序,其他的写不出以后补上( ̄▽ ̄)

  我把它们封装成了工具类,贴个代码在这以后拿手机也可以复习了

public class SortUtils {
    /**
     * 冒泡排序
     * 基本原理:相邻的两个数进行比较,大的玩下沉(后推),小的玩上冒(推前)
     * 即相邻两个数与排序规律相反时,两个数交换
     * */
    public void BubbleSort(int[] data) {
        for(int i=0;i<data.length;i++) {
            for(int j=data.length-1;j>i;j--) {
                if(data[j-1]>data[j]) {
                    swap(data, j,j-1 );                     
                }
            }
            //System.out.println(data[i]);
        }
    }
    
    /**
     * 插入排序
     *基本原理:默认在一个有序的数组中插入一个数,从后面往前扫描
     *  反复把已排序元素向后移,为插入元素提供空间
     * */
    public void InsertSort(int[] data) {    
        for(int i=1;i<data.length;i++) {
            for(int j=i-1;j>=0;j--) {
                if(data[j+1]<data[j]) {
                    swap(data, j, j+1);
                }    
            }    
        }
        //用于循环打印除结果
        for(int a=0;a<data.length;a++) {
            //System.out.println(data[a]);
        }
    }
    
    /**
     * 选择排序
     * 基本思想:在一组数种,选择最小的一位数与第一位置的数交换,
     * 然后在剩下的数中选最小的数和第二位置数交换,
     * 如此反复,直到倒数第二个数和最后一个数比较位置
     * */
    public void SelectionSort(int[] data) {
        for(int i=0;i<data.length;i++) {
            int Index=i;
            for(int j=data.length-1;j>i;j--) {
                if(data[j]<data[Index]) {
                    Index=j;
                }
            }
            swap(data, Index, i);
            //System.out.println(data[i]);
        }
    }
        
    /**
     * 把两个数位置交换
     * */
    public void swap(int[] data, int i, int j) {  
        int temp = data[i];  
        data[i] = data[j];  
        data[j] = temp;  
    }  
}

  

  

猜你喜欢

转载自www.cnblogs.com/hatsuyuki/p/8964438.html
今日推荐