首页 > 其他分享 >冒泡排序和选择排序

冒泡排序和选择排序

时间:2023-04-14 15:55:48浏览次数:32  
标签:include cout int 冒泡排序 选择 循环 排序

冒泡排序:

对N个整数(数据由键盘输入)进行升序排列。

解题思路:输入N个整数利用数组储存,利用for循环判断前后两数的大小,前面的数大于后面的数则交换位置,经过一次循环后最大的数就会到最后一位,下次循环只需进行除去最后一个数的其他数判断交换位置即可。利用循环嵌套即可实现冒泡排序。排序完根据要求的输出格式输出排序后的N个整数。一共N个整数,排序一次可以少排序一个整数,所以外层循环要进行N-1次。,内层环迅只要给N-1-i个整数排序。

代码:

#include<iostream>

#include<iomanip>

#define N 7

using namespace std;

int main()

{

    int i,j,a[N],n=0;

    cout<<"请为数组元素赋值:"<<endl;

    for(i=0;i<N;i++)

        cin>>a[i];

    for(i=0;i<N-1;i++)

    {

        for(j=0;j<N-1-i;j++)

        {

            if(a[j]>a[j+1])

            {

                int temp=a[j+1];

                a[j+1]=a[j];

                a[j]=temp;

            }

        }

    }

    cout<<"经过交换后的数组元素为:"<<endl;

    for(i=0;i<N;i++)

    {

        n++;

        cout<<a[i]<<"  ";

        if(n%5==0)

            cout<<endl;

    }

    return 0;

}

拓展:

 

 

选择排序:

思路:外层循环从数组第一个元素开始,内层循环从每次外层循环的后面一个元素开始,判断a[i]与a[j]的大小,符合条件就交换位置,外层循环每次循环都可以将最小的数放在a[i],i++后,再对后面的其余数字继续排序。

代码:

#include<iostream>

#include<iomanip>

#define N 7

using namespace std;

int main()

{

    int i,j,a[N],n=0;

    cout<<"请为数组元素赋值:"<<endl;

    for(i=0;i<N;i++)

        cin>>a[i];

    for(i=0;i<N-1;i++)

    {

        for(j=i+1;j<N;j++)

        {

            if(a[j]<a[i])

            {

                int temp=a[j];

                a[j]=a[i];

                a[i]=temp;

            }

        }

    }

    cout<<"经过交换后的数组元素为:"<<endl;

    for(i=0;i<N;i++)

    {

        n++;

        cout<<a[i]<<"  ";

        if(n%5==0)

            cout<<endl;

    }

    return 0;

}

 

该题体会:可以利用宏定义不修改代码直接实现某个数字的改变,了解了冒泡排序和选择排序的原理

 

标签:include,cout,int,冒泡排序,选择,循环,排序
From: https://www.cnblogs.com/zljzy/p/17314523.html

相关文章

  • python3 多继承时,父类有相同一个函数的选择
    classPeople:name=''age=0__weight=0def__init__(self,name,age,weight):print("People初始化")self.age=ageself.name=nameself.__weight=weightprint("People......
  • 17.6归并排序原理及实战
    #include<stdio.h>#include<stdlib.h>#defineN7typedefintElemType;voidMerge(ElemTypeA[],intlow,intmid,inthigh){staticElemTypeB[N];//加static的目的是无论函数执行多少次,都只有一个B[N]inti,j,k;for(i=low;i<=high;i++){......
  • Java中常用排序算法及示例-冒泡排序、希尔排序、选择排序、插入排序、合并排序、基数
    场景Java中需要对数据进行排序处理,常用的排序算法以及示例进行归纳整理。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、冒泡排序冒泡排序法又称为交换排序法,原理是从第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较。如此扫描......
  • 17.5堆排序实战
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<string>typedefintElemType;typedefstruct{ElemType*elem;//存储元素的起始地址intTableLen;//元素个数}SSTable;voidST_Init(SSTable&ST,intlen){S......
  • element 设置选择日期范围短
    只能选择今年和去年     <el-date-picker      style="width:100%;"      v-model="sgcxForm.year"      size="small"      type="year"      value-format="yyyy"      :......
  • 数组元素排序(一)
    算法概述定义      排序:假设含有n个记录的序列为{R1,R2,...,Rn},其相应的关键字序列为{K1,K2,...,Kn}。将这些记录重新排序为{Ri1,Ri2,...,Rin},使得相应的关键字值满足条Ki1<=Ki2<=...<=Kin,这样的一种操作称为排序。      通常来说,排序的目的是快速查找......
  • 17.3选择排序原理及实战
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<string>typedefintElemType;typedefstruct{ElemType*elem;//存储元素的起始地址intTableLen;//元素个数}SSTable;voidST_Init(SSTable&ST,intlen){S......
  • 选择企业网盘,需要注意什么?
    在信息时代,企业文件的存储及管理成为企业管理的重点之一。企业网盘作为云存储工具,同时提供了企业需要的在线协作功能,在保证企业文件数据安全下,又提高了企业办公效率。因此受到了各行各业企业管理者的青睐与喜爱。当企业想要选择一款企业网盘产品来助力企业管理时,需要注意什么呢?1,网......
  • 数组的元素查找排序
    顺序查找顺序查找:挨个查看要求:对数组元素的顺序没要求publicstaticvoidarraySearch(intvalue){int[]arr={4,5,6,1,9};//intvalue=1;intindex=-1;for(inti=0;i<arr.length;i++){if(arr[i]......
  • POJ 1094Sorting It All Out(拓扑排序)
    题目地址:http://poj.org/problem?id=1094这个题改了一下午。。代码越改越挫。。凑活着看吧。。#include<iostream>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<ctype.h>#include<queue>#include<map>......