史上最详细冒泡排序,选择排序,桶排序

桶排序

桶排序就是用数组的下标记录这个数,这样就可以记录到很大的数
然后在用数组的值去表示有几个相同的这个数(下标)
最后再用for循环把这些数输出 for(i=0;i<下标;i++)(从小到大)//for(i=下标-1;i>=0;i–)(从大到小)

代码实现

#include <iostream>

using namespace std;

int main()
{
    int i,j,a[100],t,n;
    for(i=0; i<100; i++)
        a[i]=0;
        cin>>n;//输入数的个数
    for(i=0;i<n;i++)
    {
        cin>>t;
        a[t]++;
    }
    for(i=0;i<100;i++)
    {
        for(j=0;j<a[i];j++)
            cout<<i<<" ";
    }
    return 0;
}

冒泡 选择

选择排序
原理:把待排序的n个元素看作有序部分和无序部分,依次选出第i小的元素。

  1. 开始时有序部分为空,无序部分包含n个元素。

  2.排序时每次从无序部分中选出最小的元素,把它与无序部分的第一个元素交换位置,那么该元素必大于(或等于)有序部分中的所有元素,从而使有序部分元素个数增1,无序部分元素个数减1。

  3.经过n-1次选择和交换后,有序部分有n-1个元素,无序部分只有1个元素,且该元素大于(或等于)有序部分中的所有元素,整个排序过程结束。
#include <bits/stdc++.h>

using namespace std;
#define len 5
int main()
{

    int a[len]= {1,5,4,4,3};

    for(int i=0; i<=len; i++)

        for(int j=i+1; j<len; j++)
        {
            if(a[i]>a[j])
            {
                int t=a[j];
                a[j]=a[i];
                a[i]=t;
            }

        }
    for(int i=0; i<len; i++)
        cout<<a[i];
    return 0;
}

冒泡排序
通过相邻元素之间的比较和交换使较小的元素逐渐从后向前移动,就像水底的气泡一样逐渐向上冒。具体过程如下:

  1. 首先比较d[n]和d[n-1], 若d[n]<d[n-1],则交换,使较小的元素前移,较大的元素后移;接着比较d[n-1]和d[n-2],以此类推,直 到比较d[2]和d[1]并使较小的元素前移,第一趟排序结束,则d[1]为最小的元素。

  2. 然后在d[2].d[n]间进行第二趟排序,使第二小元素前移到d[2]位置; n-1趟排序后,整个冒泡排序结束。

#include <bits/stdc++.h>

using namespace std;
#define len 5
int main()
{

    int a[len]= {1,5,4,4,3};

    for(int i=0; i<len-1; i++)

        for(int j=len-1; j>i; j--)
        {
            if(a[j]<a[j-1])
            {
                int t=a[j];
                a[j]=a[j-1];
                a[j-1]=t;
            }

        }
    for(int i=0; i<len; i++)
        cout<<a[i];
    return 0;
}

发布了11 篇原创文章 · 获赞 2 · 访问量 341

猜你喜欢

转载自blog.csdn.net/qq_45687002/article/details/103794170
今日推荐