美文网首页
冒泡排序&选择排序

冒泡排序&选择排序

作者: 七迁屋的馒头 | 来源:发表于2017-01-16 18:10 被阅读0次

    这是在学校上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;
                }
            }
            
        }
    

    相关文章

      网友评论

          本文标题:冒泡排序&选择排序

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