当前位置:首页 » 网页前端 » 前端冒泡排序图
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端冒泡排序图

发布时间: 2022-09-10 11:12:08

① 什么叫做冒泡排序

冒泡排序★★★★★★
#include<stdio.h>
#define N 5
void main()
{
int i,j;
int grade[N],temp;
printf("输入5个数\n");
for(i=0;i<N;i++)
{
scanf("%d",&grade[i]);
}
for(i=0;i<N;i++)
{
for(j=0;j<N-1-i;j++)
{
if(grade[j]<grade[j+1])
{
temp=grade[j+1];
grade[j+1]=grade[j];
grade[j]=temp;
}
}
}
printf("最后排序为:\n");
for(i=0;i<N;i++)
{
printf("%d",grade[i]);
}
printf("\n");
}
#include<stdio.h> //链接标准头文件
#define N 5 //定义常量N并赋值为5
void main() //主函数入口
{ //表示主函数开始
int i,j; //定义整形变量i和j
int grade[N],temp; //定义N维(N=5,也就是五维啦^^)整形数组和整形变量temp
printf("输入5个数\n"); //在屏幕上显式“输入5个数”并且换行
for(i=0;i<N;i++) //开始for循环,从i=0,每次加1,直到i=4,共需循环5次
{ //循环体开始
scanf("%d",&grade[i]); //依次获取用户输入的整数值并存入数组grade中
} //循环结束
for(i=0;i<N;i++) //开始外层for循环,从i=0,每次加1,直到i=4
{ //外层循环体开始
for(j=0;j<N-1-i;j++) //开始外层for循环,从j=0,每次加1直到i等于外层循环的N-j-1
{ //内层循环体开始
if(grade[j]<grade[j+1]) //条件判断
{ //如果整形数组前面的数比其后的小,执行以下语句
temp=grade[j+1]; //将比较大的数赋值给temp
grade[j+1]=grade[j]; //将比较小的数赋值给数组中后面的变量
grade[j]=temp; //将比较大的数赋值给数组中前面的变量
} //从此便完成大小变量的交换,使得大值往前放
} //结束内层循环
} //结外内层循环,完成排序
printf("最后排序为:\n");//在屏幕显式“最后排序为:”并换行
for(i=0;i<N;i++) //同开始的for循环类似
{ //开始循环输出
printf("%d",grade[i]); //只是这里要逐个输出数组中的五个数值
} //结束循环输出
printf("\n"); //输出换行到屏幕,看不到什么效果,可删掉
} //结束main()函数

② 冒泡排序升序和降序步骤

  • /** 冒泡升序排序 **/

    public static int[] ascSort(int[] param) {

    int in, out;

    int temp = 0;

    for (out = param.length; out > 0; out--) {

    for (in = 0; in < out - 1; in++) {

    if (param[in] > param[in + 1]) {

    temp = param[in];

    param[in] = param[in + 1];

    param[in + 1] = temp;

    }

    }

    }

    return param;

    }

  • 2

    /** 冒泡降序排序 **/

    public static int[] descSort(int[] param) {

    int in, out;

    int temp = 0;

    for (out = 0; out < param.length; out++) {

    for (in = param.length - 1; in > out; in--) {

    if (param[in] > param[in - 1]) {

    temp = param[in];

    param[in] = param[in - 1];

    param[in - 1] = temp;

    }

    }

    }

    return param;

    }

  • 3

    执行升序和降序方法:

    public static void main(String[] args) {

    int[] param = { 1, 6, 7, 5 };

    param = ascSort(param);

    System.out.print("升序结果为:");

    for (int i = 0; i < param.length; i++) {

    System.out.print(param[i]);

    }

    System.out.println("");

    param = descSort(param);

    System.out.print("降序结果为:");

    for (int i = 0; i < param.length; i++) {

    System.out.print(param[i]);

    }

    }

  • 4

    运行结果如下:

  • 注意事项

  • 冒泡排序的效率为O(N*N),比较次数最多为N(N-1)/2,交换次数最多为N(N-1)/2,其中N代表需要比较的数的个数;

  • 冒泡排序是一种以时间换空间的排序方法,最坏的情况是把顺序的排列变成倒序,把倒序的排列变成顺序,此时每次比较运算都要进行交换;

  • 冒泡排序的效率和时间复杂度有关的,时间复杂度越大,则执行的效率就越低;

  • 在冒泡算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1);

  • 在时间频度不相同的情况下,时间复杂度有可能是相同的,如T(n)=n*n+2n+3与T(n)=n*n+5n+10时间频度不相同,则时间复杂度都是O(n*n)

③ 怎样排序

  1. 冒泡排序是一种简单的排序算法,就地排序。实现原理也很简单:重复地遍历要排序的数列,一次比较两个元素,如果两个元素根据某种排序策略相对位置错误,那么就交换这两个元素的位置。遍历的操作重复进行直到不需要再进行任何交换,也就是说数列已经成为一种有序数列呢。

  2. 接下来我们通过图示的方式来说明冒泡排序的过程,以下是第一轮冒泡排序过程:

    voidbubbleSort(intarr[],intcount){
    inti,j,temp,tag;//tag用于记录当前冒泡排序进行比较的终止位置
    tag=count-1;
    for(i=0;i<count-1;i++){
    for(j=0;j<tag;j++){
    if(arr[j]>arr[j+1]){
    temp=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=temp;
    }
    }
    tag--;//下一轮排序进行比较的终止位置
    }
    }

    ④ Web前端工程师你知道JavaScript中常用的排序算法吗

    今天小编要跟大家分享的文章是关于JavaScript中常用的排序算法。相信很多刚刚从事Web前端工作或者准备面试的小伙伴们对此还不是很了解,下面就让小编来为大家介绍一下吧!


    一、冒泡排序


    冒泡排序是我们在编程算法中,算是比较常用的排序算法之一,在学习阶段,也是最需要接触理解的算法,所以我们放在第一个来学习。


    算法介绍:


    ·___冉舷嗔诘牧礁鲈,如果前一个比后一个大,则交换位置。


    ·___谝宦职炎畲蟮脑胤诺搅俗詈竺妗


    ·___捎诿看闻判蜃詈笠桓龆际亲畲蟮模灾蟀凑詹街1排序最后一个元素不用比较。

    冒泡算法改进:


    设置一个标志,如果这一趟发生了交换,则为true。否则为false。如果这一趟没有发生交换,则说明排序已经完成。代码如下:

    假如数组长度是20,如果只有前十位是无序排列的,后十位是有序且都大于前十位,所以第一趟遍历排序的时候发生交换的位置必定小于10,且该位置之后的必定有序,我们只需要排序好该位置之前的就可以,因此我们要来标记这个位置就可以了,即可以记录每次扫描中最后一次交换的位置,下次扫描的时候只要扫描到上次的最后交换位置就行了,因为后面的都是已经排好序的,无需再比较,代码如下:

    每一次循环从两头出发算出最大和最小值,代码如下:

    在代码3的基础上记录每次扫描最后一次交换的位置,下次扫描的时候只要扫描到上次的最后交换位置就行,同代码2,代码如下:

    二、快速排序


    算法介绍:


    快速排序是对冒泡排序的一种改进,第一趟排序时将数据分成两部分,一部分比另一部分的所有数据都要小。然后递归调用,在两边都实行快速排序。

    三、选择排序


    算法介绍:


    选择排序就是从一个未知数据空间里,选取之最放到一个新的空间

    四、插入排序


    算法介绍:


    ·___拥谝桓瞿媳慌藕眯虻脑乜


    ·___〕鱿乱桓鲈兀谝丫判虻脑匦蛄兄写雍笙蚯吧_


    ·___绻雅判虻脑卮笥谌〕龅脑兀蚪浞直鹣蚝笠贫晃


    ·___钡秸业揭雅判虻脑刂行∮诨虻扔谌〕龅脑兀〕龅脑胤诺剿暮笠晃


    ·___馗床街2

    插入排序算法改进-二分法插入排序:

    以上就是小编今天为大家分享的JavaScript中常用的排序算法的文章,文章中介绍的是四种比较基础的排序方法,JavaScript的排序算法还有很多,这是我们4种最常见也是最基本的算法,掌握理解好,在面试和开发中也能从容应对了。想要了解更多Web前端知识记得关注北大青鸟Web培训官网哦。最后祝愿小伙伴们工作顺利!


    本文转自前端研究所。


    *声明:内容与图片均来源于网络(部分内容有修改),版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

    ⑤ 冒泡排序 搞蒙了!求详细解说! 此图为例

    冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
    它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
    这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。
    算法原理

    冒泡排序算法的运作如下:(从后往前)
    比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
    针对所有的元素重复以上的步骤,除了最后一个。
    持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    ⑥ 起泡法排序

    1.起泡排序算法的原理 起泡排序是交换排序的一种,其基本方法是:设待排序元素列中元素...
    2.起泡排序的基本算法
    3.template<classT>
    4.voidBubbleSort(T arr[],intn){
    5.起泡排序的时间复杂度分析 起泡排序算法中,第i趟起泡需要执行n-i次比较和交换操作。因此,i从1到n-1,执行的比较操作的次数为: (n-1)+(n-2)+ …...

    ⑦ 冒泡排序流程图

    冒泡第一次:14 15 28 5 10 30
    冒泡第二次:14 15 5 10 28 30
    冒泡第三次:14 5 10 15 28 30
    冒泡第四次:5 10 14 15 28 30

    选择排序我忘记了!