• 桶排序和直接排序的数据结构和算法2


    一个成功修改的代码:(c代码)参考一个很重要的web:http://www.diybl.com/course/3_program/c++/cppjs/20090403/164014.html

      核心问题在于用new分配结构体数组

    http://it.huij.net/it/kaifayuyan/C_C__/19990715/12220.html

    #include<stdio.h>
    #include<iostream.h>
    #include<iomanip.h>
    #include<stdlib.h>
    #include<time.h>
    #include<malloc.h>
    #define MAXI 11
    typedef int KeyType;
    typedef int ElemType;
    typedef struct {
        KeyType key;
        ElemType data;
    }RecordNode;
    typedef struct {
        int n;
        RecordNode *record;
    }SortObject;

    void insertsort (SortObject *pvector)
    {
        int i,j;
        RecordNode temp;
        for(i=1;i<pvector->n;i++)
        {
            temp=pvector->record[i];j=i-1;
            while ((temp.key<pvector->record[j].key)&&(j>=0))
            {
                pvector->record[j+1]=pvector->record[j];j--;
            }
            if(j!=(i-1)) pvector->record[j+1]=temp;
        }

    }

     insertsort算法的深入分析:

    int main()
    {  
       SortObject a;
        a.n=MAXI;
        int i,j,k;
        srand(time(0));
        a.record= new RecordNode[MAXI]; //最关键就在这里,一开始是出现warning,运行程式出错,后来发现是没有申请内存,但任然搞不清为谁申请,设法给a,用malloc申请,SortObject a=()malloc(sizeof()); 后来,发觉得为a.record申请,于是就修改typedef struct {
        KeyType key;
        ElemType data;
    }RecordNode,*pu; 添加指向RecordNode的指针*pu,但仍有问题.


       for( i=1;i<a.n;i++)
       { //曾经在这里添加代码a.record=()malloc(sizeof()),程式运行后,出现一些奇观的情况
       a.record[i].key=rand()%80;
        a.record[i].data=rand()%100;
       }
       cout<<"排序前数组:\n";
       for( j=1;j<a.n;j++)
       {cout<<setw(6)<<a.record[j].key;}
       cout<<"\n正在调用insertsort\n"<<endl;
       insertsort(&a);
       cout<<"运行insertsort的结果如下:\n"<<endl;
        for( k = 1; k < a.n; k++)
            printf("%d ", a.record[k].key);
        getchar();
        free( a.record); //事实上,c++不是用free,而是用
       return 0;
    }

    image

    做了一个小调整,出现错误:

    LNK1168: cannot open Debug/insertsort1.exe for writing
    Error executing link.exe.

    就是上面那个窗口没有关闭,添加一段代码,消除这个问题.

    /* Note:Your choice is C IDE */
    //插入排序法charufa3.cpp
    #include<iostream.h>
    #include<iomanip.h>
    #include<stdlib.h>
    #include<time.h>
    #define MAXI 11
    typedef int KeyType;
    typedef int ElemType;
    struct rec {
    KeyType key;
    ElemType data;};
    typedef rec sqlist[MAXI];
    void insertsort(sqlist b,int n)
    {int i,j,k;
      for(i=2;i<n;i++)
      {b[0]=b[i];
       j=i-1;
       while(b[0].key<b[j].key)
       {b[j+1]=b[j];j--;}
        b[j+1]=b[0];
       for(k=1;k<n;k++)
        cout<<setw(4)<<b[k].key;
       cout<<endl;}}

    insertsort算法的深入分析:


    void main()
    {cout<<"charufa3.cpp运行结果:\n";
    sqlist a;int i,n=MAXI;
    srand(time(0));
    for(i=1;i<n;i++)
      {a[i].key=rand()%80;
       a[i].data=rand()%100;}
    cout<<"排序前数组:\n";
    for(i=1;i<n;i++)
      cout<<setw(4)<<a[i].key;
    cout<<endl;
    cout<<"数组排序过程演示:\n";
    insertsort(a,n);
    cout<<"排序后数组:\n";
    for(i=1;i<n;i++)
      cout<<setw(4)<<a[i].key;
    cout<<endl;cin.get();}

  • 相关阅读:
    牛人整理的Django资源大全
    【转】Eclipse的HTML编辑器
    【问】django中视图转换
    【转】the django book中文
    【转】介绍COM入门
    浅谈 XSS & CSRF
    如何编写更好的CSS
    视觉交互的一点分享
    CORS(CrossOrigin Resource Sharing) 跨域资源共享
    JavaScript中数组对象的那些自带方法
  • 原文地址:https://www.cnblogs.com/fleetwgx/p/1454286.html
Copyright © 2020-2023  润新知