开发者社区> 问答> 正文

c++编程用函数模板实现排序算法(冒泡排序、插入排序)

c++编程用函数模板实现排序算法(冒泡排序、插入排序)

展开
收起
知与谁同 2018-07-22 10:15:44 3081 0
3 条回答
写回答
取消 提交回答
  • void bubble_sort(int a[], int n)
    {
        int i, j, temp;
        bool bo;
        do{
        bo=true;
        for (j = 1; j <= n - i; j++)
            {
                if(a[j] > a[j + 1])
                {
                    temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                    bo=false;
                }
            }
        i++;
        }while(!bo);
    }

    冒泡 int insertsort(int r[]){
        for(int i=2;i<=n;i++){
            x=r[i];j=i-1;    
            while(x<r[i]){
                r[j+1]=r[j];
                j--;
            }
            r[j+1]=x;
        }
    }

    插入

    2019-07-17 22:49:42
    赞同 展开评论 打赏

  • #include <iostream>

    using namespace std;


    //从小到大排序

    template <typename T>

    void Bubble(T arr[], int n)

    {

    int i,j;

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

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

    {

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

    {

    T temp;

    temp = arr[j];

    arr[j] = arr[j+1];

    arr[j+1] = temp;

    }

    }


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

    cout << arr[i] << endl;

    }


    //从小到大排序

    template <typename T>

    void Insert(T arr[], int n)

    {

    int i,j,pos;

    T temp;

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

    {

    pos = i;

    for (j=i; j<n; j++)

    {

    if (arr[j] < arr[pos])

    {

    pos = j;

    temp = arr[j];

    arr[j] = arr[pos];

    arr[pos] = temp;

    }

    }


    temp = arr[i];

    arr[i] = arr[pos];

    arr[pos] = temp;

    }


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

    cout << arr[i] << endl;

    }


    int main()

    {

    int i[7] = {2, 234, 234, 12, 1400, 345, 564};

    float f[7] = {2.9, 234.2, 234.5, 12.73, 1400, 345.2, 564.1};

    //Bubble(i, 7);

    Insert(i, 7);

    cout << endl;

    //Bubble(f, 7);

    Insert(f, 7);


    return 0;

    }

    2019-07-17 22:49:42
    赞同 展开评论 打赏
  • #include <iostream>
    using namespace std;

    //从小到大排序
    template <typename T>
    void Bubble(T arr[], int n)
    {
    //冒泡
    int i,j;
    for (i=0; i<n; i++)
    for (j=0; j<n-i-1; j++)
    {
    if (arr[j] > arr[j+1])
    {
    T temp;
    temp = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = temp;
    }
    }

    for (i=0; i<n; i++)
    cout << arr[i] << endl;
    }

    //从小到大排序
    template <typename T>
    void Insert(T arr[], int n)
    {
    //插入排序
    int i,j,pos;
    T temp;
    for (i=0; i<n; i++)
    {
    pos = i;
    for (j=i; j<n; j++)
    {
    if (arr[j] < arr[pos])
    {
    pos = j;
    temp = arr[j];
    arr[j] = arr[pos];
    arr[pos] = temp;
    }
    }

    temp = arr[i];
    arr[i] = arr[pos];
    arr[pos] = temp;
    }

    for (i=0; i<n; i++)
    cout << arr[i] << endl;
    }

    int main()
    {
    int i[7] = {2, 234, 234, 12, 1400, 345, 564};
    float f[7] = {2.9, 234.2, 234.5, 12.73, 1400, 345.2, 564.1};
    //Bubble(i, 7);
    Insert(i, 7);
    cout << endl;
    //Bubble(f, 7);
    Insert(f, 7);

    return 0;
    }
    2019-07-17 22:49:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载