冒泡排序,选择排序,插入排序

来源:互联网 发布:国家旅游局数据 编辑:程序博客网 时间:2024/05/18 15:05
# 冒泡排序,选择排序,插入排序
* ## 冒泡排序
    冒泡排序的思想:
    将数组中的元素,从第一个开始,分别和后一个元素相比,如果前一个元素,比后一个元素大,那么交换两个元素的位置,这样,每轮排序结束后,最大的元素就会冒泡排到最后,以此达到排序的目的.
* ### 伪代码的实现
* 1 对数组array进行 array.lenght-1轮冒泡
* 2 循环判断相邻元素的大小
* 2.1 如果前一个比后一个大,交换两个元素的位置,否则返回判断条件
* 3 执行第一步

* ### 代码实现
  ```
  /*冒泡排序*/
    public static void bubbleSort( int[] array) {
        for(int i = 1;i < array.length;++i) {
            for(int j = 0;j < array.length - i;++j) {
                if(array[j]>array[j+1]) {
                    int temp = array[j+1];
                    array[j+1] = array[j];
                    array[j] = temp;
                }
            }
        }
    }
  ```
* ## 选择排序
    选择排序的思想:
    将数组的第一个元素和后面的元素相比,如果比后面元素大,那么交换位置,这样,第一轮选择结束后,第一个元素就是最小值,然后第二个元素分别和后面元素比较,直到最后一个元素.
* ### 伪代码实现
* 1 将数组的第一个元素到最后一个元素分别提出来
* 2 将选出的元素分别和后面元素比较
* 2.1 如果选出的元素大于后面元素,交换两个元素位置,否者,返回第二步
* 3 执行第一步

* ### 代码实现
 ```
 /*选择排序*/
    public static void selectSort(int[] array) {
        for(int i=0;i<array.length-1;++i)
        {
            for(int j=i+1;j<array.length;++j)
            {
                if(array[i]>array[j]) {
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
    }
 ```
 * ## 插入排序
    插入排序的思想:
    将一个无序表中的元素选择出来,分别插入一个有序列表中,并保持列表的有序性,这样,每次插入,都是一个有序数组
* ### 伪代码实现
* 1 选出无序列表的第一个元素
* 2 与有序列表的最后一个元素比较,如果比最后一个元素小,下一步,否则认为插入有序列表最后也是有序的,返回第一步
* 3 将选出的元素从后向前和有序列表中的元素比较,如果小于元素中的元素,下一步,否则,结束循环,直到成为第一个元素
* 3.1 有序列表的元素向后挪动一位
* 2.1 将元素插入

* ### 代码实现
```
    /*插入排序*/
    public static void insertSort(int[] array) {
        for(int i = 1;i<array.length;++i) {
            if(array[i]<array[i-1]) {
                int temp = array[i];
                int k = i-1;
                for(int j = k; j >= 0 && temp < array[j]; --j) {
                    array[j+1] = array[j];
                    k--;
                }
                array[k+1] = temp;
            }
        }    
    }
```
原创粉丝点击