• C++排序方法补充


    ---恢复内容开始---

    1.插入排序:

    思想:当读入一个元素的时候,在已经排序好的序列中,搜索它的正确位置,再放入读入的元素。

    但是,有一个不可以忽略的问题是:在插入元素之前,应当先将它后面的语速后移一位,以保证插入位置的原有元素不被覆盖。

    例子:

    有8个数。

    36 25 48 12 65 43 20  58

    排序方案;

    第0步:[36] 25 48 12 65 43 20 58

    第一步:[25 36] 48 12 65 43 20 58

    第二步:[25 36 48] 12 65 43 20 58

    第三步:[12 25 36 48] 65 43 20 58

    第四步:[12 25 36 48 65] 43 20 58

    第五步:[12 25 36 43 48 65] 20 58

    第六步:[12 20 25 36 43 48 65] 58

    第七步:[12 20 25 36 43 48 58 65]

    程序:

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n,i,j,t,a[1000000];
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
         }
         for(int i=0;i<=n;i++)
         {
             for(int j=i-1;j>=0;j--)
             {
                 if(a[j]<a[i])break;
             }
             if(j!=i-1)
             {
                 t=a[i];
                 for(int k=i-1;k>j;k--)
                 {
                     a[k+1]=a[k]; a[k+1]=t;
                 }
                
             }
          } 
          for(int i=0;i<n;i++)
          {
              cout<<a[i]<<" ";
          }
    }

    2.桶排序:

    细想:若待排序的值在一个明显有限范围内时,可设计有限个有序桶,待排序的值装入对应的桶(值可以为多个),桶号就是待排序的值,顺序输出各桶的值,将得到有序的数列。

    例子:

    输入n个0到100以内的整数,由小到大排序输出。

    输入示例;

    10

    2 3 1 2 4 55 3 55 3 2

    输出示例:

    1 2 2 2 3 3 3 4 55 55

    程序;

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int main()
    {
        int b[10000]={0},n,k;
        //memset(b,0,sizeof(b));//将数组全部变为零 
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>k;b[k]++;
         } 
         for(int i=0;i<=100;i++)
         {
             while(b[i]>0)
             {
                 cout<<i<<" ";
                 b[i]--;
             }
         }
    }
  • 相关阅读:
    在其他对象上同步
    如何在一个线程环境中使用一个线程非安全的java类
    原子类
    Volatile
    Spring中的设计模式2
    Spring中的设计模式
    Struts2中的设计模式
    Struts2中的设计模式----ThreadLocal模式
    享元模式(Flyweight)
    Java类加载器的工作原理
  • 原文地址:https://www.cnblogs.com/FXY-180/p/9664815.html
Copyright © 2020-2023  润新知