冒泡排序&选择排序

这是在学校上C语言ppt课件上讲到的,过程清晰很容易理解

假设存在一个int[] a

一、 冒泡排序过程

1、比较第一个数与第二个数,若a[0]>a[1],则交换;然后比较第二个数与第三个数;一次类推,直至第n-1个数和第n个数比较为止------第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上。

2、对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置。

3、重复上述过程,共经过n-1趟冒泡排序后,排序结束。

    /**
     * 冒泡排序
     * @param sortedArray
     */
    public static void bubbleSort(int[] a) {
        //进行a.length-1趟排序
        for(int i=0; i<a.length-1; i++) {
             //内层循环,每趟循环从0开始,到a.length-1-i结束,每趟排完后,将最大安置序列后面
            for(int j=0; j<a.length-1-i; j++) {
                if(a[j] > a[j+1]) {
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
    }

二、 选择排序过程

1、首先通过n-1次比较,从n个数中找出最小的,将它第一个数交换----第一趟选择排序,结果最小的数被安置在第一个元素位置上。

2、再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换----第二趟选择排序。

3、重复上述过程,共经过n-1趟排序后,排序结束。

    /**
     * 选择排序
     * @param sortedArray
     */
    public static void selectSort(int[] a) {

        for(int i=0; i<a.length-1; i++) {
            int index = i; //记录每一趟排序中值最小的数据的位置
            //内层循环,每趟循环从i+1开始,到a.length结束,每趟排完后,将最小安置序列前面
            for(int j=i+1; j<a.length; j++) {
                if(a[j] < a[index]) 
                    index = j;
            }
            if(index != i) {
                int temp = a[i];
                a[i] = a[index];
                a[index] = temp;
            }
        }
        
    }

推荐阅读更多精彩内容