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

冒泡排序和选择排序

作者: AiSheiShei | 来源:发表于2017-02-28 21:02 被阅读0次

冒泡排序

冒泡排序是两两进行比较
列如有一个数值如下

 int[] arr1 = {5,2,3,6,1}

5和2比较2比5小那么2和5调换位置
调换后的数组如下

int[]arr1 = {2,5,3,6,1}

然后5在和3比较3比5小在调换位置
5在和6比较5比6小不在调换位置
调换后的数组如下

int[]arr1 = {2,3,5,6,1}

现在最小的数值还在最后那么还要在次作比较
2和3比较3和5比较5和6比较6和1比较6比1大
那么6和1调换位置
调换后的数组如下

int[]arr1 = {2,3,5,1,6}

如此比较下去一直到数组里最小的数值在第一位
如:

int[]arr1 = {1,2,3,5,6}

如何实现上面的方法,就要利用到for循环嵌套
全部代码如下:

 int[] arr1 = {5,2,3,6,1}
for (int i = 0; i < arr1.length - 1; i++) {
        for (int j = 0; j < arr1.length - 1 - i; j++) {
            if (arr1[j] > arr1[j +1]){
                int temp = arr1[j + 1];
                arr1[j + 1] = arr1[j];
                arr1[j] = temp;
            }

        }
    }
    for (int i:arr1) {
        System.out.println(i);

    }

最外层for里的arr1.length是数组的长度减去1是因为冒泡排序是两两比较的,
而例子里的数组里面的元素个数是5个两两比较最多只能是进行4次
所以外层for里的写法是arr1.length-1.

里层的for的arr1.length-1-i,是因为每一次的循环都会比较出一个数值,每一次有底至上的上升
所以每一次都会都会找出一个最大的元素那么这个最大的元素就不用再比较了所以里层for的
写法是arr1.length-1-i.

if判断里的条件的意思是arr1[j]位置上的元素是否大于arr1[j+1]位置上的元素

 int temp = arr1[j + 1];
 arr1[j + 1] = arr1[j];
 arr1[j] = temp;

这段代码的意思是
当满足if里的判断条件的时候那就要定义一个int类型的temp(变量名)来承接arr1[j+1]上
的数值,在把arr1[j]上的值在赋值给arr1[j+1],再把temp上所携带的值赋值给arr1[j]这样
就完成了位置的交换.

 for (int i:arr1) {
        System.out.println(i);

    }

这段代码是把数组中排列好的元素循环便利出来,在打印.

选择排序

选择排序是用数组中的第0个位置上的元素和第1个位置上与元素比较
在和第2个位置上的元素比较,一直比较到最后一个,如果有比他小的就
交换位置,然后在那0位置上的元素比较,一直到没有比第0位置上的元素
在小的了,在哪第1位置上的元素比较,以此类推一直到最后一个元素.

  int[] arr1 = {5, 2, 3, 6, 1};
        for (int i = 0; i < arr1.length - 1; i++) {
            for (int j = i + 1; j < arr1.length; j++) {
                if (arr1[i] > arr1[j]) {
                    int temp = arr1[i];
                    arr1[i] = arr1[j];
                    arr1[j] = temp;
                }
            }
        }
        for (int k : arr1) {
            System.out.print(k);
        }

内层for的i+1的意思是当为0是他的循环是在数组的1位置开始比较的.

相关文章

  • JAVA简单排序

    选择排序和冒泡排序: 排序结果

  • 常用的两种排序-冒泡、选择

    Swift版 冒泡排序 选择排序 OC版 冒泡排序 选择排序

  • 冒泡算法/选择排序算法/直接插入排序算法C语言实现

    排序算法 冒泡排序 选择排序 冒泡排序和选择排序的核心思路: 冒泡排序是:相邻两个元素两两进行比较,小则交换位置。...

  • android算法 - 排序

    冒泡排序 选择排序 插入排序 快速排序 堆排序 其中简单排序就是冒泡排序,选择排序和插入排序。继而在分冶合并思想上...

  • OC中的排序算法

    目录 冒泡排序、快速排序、选择排序、插入排序 冒泡 快排 选择 插入

  • 记录几个常见的排序算法

    常见的排序有:快速排序、冒泡排序、希尔排序、选择排序、插入排序、归并排序 冒泡排序: 插入排序: 选择排序: 希尔...

  • python实现经典排序算法

    冒泡排序 这里是向前冒泡,即每一趟排序后最小元素冒泡至最前 选择排序 选择排序和冒泡相似,每一趟排序完后将最小元素...

  • Java实现常见的算法

    主要罗列了常见的选择排序,冒泡排序和快速排序,还有二分查找的算法。 选择排序 冒泡排序 快速排序 二分查找 注意二...

  • Java语言——数组排序算法

    数组有很多常用的算法,包括冒泡排序、直接选择排序和反转排序。 一、冒泡排序 冒泡排序是最常用的数组排序算法之一,它...

  • 排序

    冒泡排序: 冒泡排序 选择排序: 插入排序: 希尔排序: 归并排序: 快速排序: 堆排序: 计数排序: 桶排序: ...

网友评论

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

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