首页 > 其他分享 >冒泡排序

冒泡排序

时间:2023-05-14 22:46:04浏览次数:42  
标签:int 元素 冒泡排序 ++ 数组 过程

1.问题描述

对N个整数进行升序排列

2.问题分析

冒泡法应该是最基础最简单的了。共有N个数,我们可以利用数组进行储存。冒泡排序的思想就是从表头开始往后扫面数组,过程中比较相邻两个元素的大小,若前面元素大于后面的元素,则将他们互换,称之为消去了一个逆序。在扫描过程中,不断地将两相邻元素中的大者往后移动,最后将数组中的最大者换到了表的最后,这就是数组中最大元素应有的位置,然后不断重复上面的过程,直到剩下的数组元素为0为止,此时的数组就变为了有序。

3.算法设计

第一轮交换过程可以表示为

for(j=0;j<n-1;j++)
    if (a[j] > a[j + 1])
    {
        t = a[j];
        a[j] = a[j + 1];
        a[j + 1] = t;
    }

第二轮交换过程

for(j=0;j<n-2;j++)
    if (a[j] > a[j + 1])
    {
        t = a[j];
        a[j] = a[j + 1];
        a[j + 1] = t;
    }

第三轮交换过程

for(j=0;j<n-3;j++)
    if (a[j] > a[j + 1])
    {
        t = a[j];
        a[j] = a[j + 1];
        a[j + 1] = t;
    }

由此发现,第一轮比较判定条件是就j<n-1;第二轮是j<n-2;第三轮是j<n-3...................第i轮就是j<n-i

4.完整程序

#include<iostream>
using namespace std;
#define N 10
int main()
{
    
    int a[N], t, i, j;
    for (i = 0; i < N; i++)
    {
        cin >> a[i];
    }
    for(i=1;i<N-1;i++)
        for(j=0;j<=N-i;j++)
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
    for (i = 0; i < N; i++)
    {
        cout << a[i] << endl;
    }
    return 0;
}

 

标签:int,元素,冒泡排序,++,数组,过程
From: https://www.cnblogs.com/lllyclh/p/17400461.html

相关文章

  • 冒泡排序2
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(void){ intarr[5];//加上'\0'后由数组变成字符串 inti,j,temp; printf("请输入五个数字:\n"); for(j=0;j<5;j++) { scanf("%d",&arr[j]); } for(i=0;i&......
  • 通过冒泡排序,实现通过值拿key
    '''实现冒泡排序后,输出关联字典的key通过值得列表,排序后,拿到字典的key,在透过key,可以关联另一个列表适用场景,比如投票后,要通过数据拿到前三名的名字'''a={'a':1,'b':2,'c':3,'d':4}s=[1,3,2,1]ss=[]list_k=[]foriinrange(len(s)):print('iiiiiiiiii......
  • 冒泡排序
    importjava.util.Arrays;/***@Auther:么么*@Date:2023/5/8-05-08-22:16*@Description:PACKAGE_NAME*@version:1.0*///冒泡排序publicclasstest02{//这是一个main方法,是程序的入口:publicstaticvoidmain(String[]args){......
  • 冒泡排序
    目录汇编实现及推导过程高级语言实现纸上得来终觉浅,绝知此事要躬行汇编实现及推导过程;程序名称:;功能:冒泡排序,方法5:不用两两比较,第一位数和其余数比较,小就交换;=======================================assumecs:code,ds:data;排序;手推算法;;外层循环条件si=0;......
  • 冒泡排序
    voidbubble_sort(intarr[],intsz)//这里的arr[]传递的是首地址{ inti=0;for(i=0;i<sz-1;i++)//一共进行多少趟 {intj=0;for(j=0;j<sz-1-i;j++)//每一趟进行多少次冒泡排序 { if(arr[j]>arr[j+1])//如果判定条件成立将上一个数值赋值给下一个数值{ int......
  • 一篇文章讲明白冒泡排序
    原文点此跳转什么是冒泡排序(bubbleSort)?冒泡排序是所有排序算法中最简单的一种,当然也是性能最差的一种。冒泡排序的思想其实很简单,就如它的名字一样在水中"冒泡"。水中有很多散乱的小气泡,然后一个个气泡往水面上冒出。例如一组无序的数组,最左边就是水底,最右边就是水面,最左边的元素......
  • 手把手教你掌握冒泡排序思路
    完整代码:#include<stdio.h>bubble_sort(intarr[],intsz){inti=0;intj=0;for(i=0;i<sz-1;i++){for(j=0;j<sz-1-i;j++){if(arr[j]>arr[j+1]){inttmp=arr[j];arr[j]=arr[j+1];arr[j+1]=tmp;}}}}intmain(){intarr[10]=......
  • 8冒泡排序
    #include<iostream>usingnamespacestd;#defineN10intmain(){ intarr[N],a,k,i,j,count; cin>>a; for(i=0;i<a;i++){ cin>>arr[i]; } for(i=0;i<a;i++){ for(j=i+1;j<a;j++){ k=arr[j]; if(k<arr[i]){ arr[j]=arr[i]; arr[i]=......
  • c语言趣味编程(8)冒泡排序
    一、问题描述对n个整数进行升序排列(数据由键盘键入)二、设计思路(1)读取从键盘键入的n个数据,存入数组a中;(2)用for循环对数组a中的数据进行遍历,并用if语句来判断大小,按从小到大存入;(3)遍历输出数组中已经完成升序排列的数组元素;三、程序流程图 四、伪代码五、代码1#include......
  • 冒泡排序
    问题描述:对N个整数(数据由键盘输入)进行升序排列。这里采用五个数。代码如下:#include<iostream>#include<vector>usingnamespacestd;intmain(){ inta[5],t; for(inti=0;i<5;i++){ cin>>a[i]; } for(inti=1;i<=4;i++){ for(intj=0;j<......