zoukankan      html  css  js  c++  java
  • AJPFX对选择和冒泡两种排序的理解

    冒泡排序和直接选择排序都是排序中比较简单和容易实现的算法,先简单说说两者的区别:先以按照元素从小到大为:
    冒泡排序:将相邻元素两两比较,如果有比较大的,就把比较大的放在右边,这样的结果就是一轮排序完毕后最大的数直接被放在了最右边,然后从左边第二个数开始比较,以此类推,直到倒数第二个数为止。
    选择排序:与冒泡排序不同,选择排序采取的是从第二位开始检查,如果发现有数最小就记下该数的为止,等到检查完毕然后再把该数和第一位交换,所以选择排序每一轮可能只要一次交换,而冒泡可能要交换很多次。两者比较的次数相同,因此外层循环是一样的。
    具体来说,我们以数组的排序为例
    arr[]={4,3,2,1}  ,其中arr[0]=4,arr[1]=3,arr[2]=2,arr[3]=1;
    冒泡排序的代码是:以上是老师提供的代码
    for(int i=0;i<arr.length-1;i++){//外循环表示比较次数,要比较数组长度-1次
    for(int j=0;j<arr.length-i-1;j++){//内层循环表示两两比较的次数,因为每一次比较都有一个最大值被放在右边,因此每次只需要比较数组长度-i即可for(arr[j]>arr[j+1]){//把大的值放右边
    int temp=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=arr[j]
    }
    }
    }
    冒泡排序是对arr[0]到arr.length-i-1进行排序,这是一种内排序,范围是逐渐缩小的


    选择排序
    for(int i=0;i<arr.length-1;i++){
    for(int j=i+1;j<arr.length;j++){
    for(arr>arr[j]){//把小的值放在左边
    int temp=arr;
    arr=arr[j];
    arr[j]=temp

    }
    }
    选择排序比起冒泡排序来说提高了一些效率,顺便说1下冒泡排序最后一位不需要比较,选择排序从i+1位开始比较,最后一位需要比较

    选择排序是a与a[i+1]到arr.length进行比较,这是一种外部排序

  • 相关阅读:
    MySQL group_concat() 函数用法
    Git error The file will have its original line endings in your working directory
    SQL exists 基本用法
    (11) 严格模式(use strict)
    (10)变量提升
    (9)调试
    (8)正则表达式
    (7)类型转换
    (6)typeof, null, 和 undefined
    (5)运算符
  • 原文地址:https://www.cnblogs.com/AJPFX/p/10891284.html
Copyright © 2011-2022 走看看