• 数据结构中三种重要的入门级的线性表排序方法

    普通类
    • 支持
    • 批判
    • 提问
    • 解释
    • 补充
    • 删除
    • 数据结构中三种重要的入门级的线性表排序方法

    C++ 代码 #include <windows.h>
    #include <iostream>

    using namespace std;

    void QSort(int a[],int left,int right);
    void BSort(int newarray[],int arraylen);
    void Isort(int newarray[],int arraylen);
    void SetColor(unsigned short ForeColor=4,unsigned short BackGroundColor=0)
    {
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor);
    }

    void main()
    {
    SetColor(0,10);
    //int array[]={8,7,7};//三位观测
    int array[]={1,2,3,7,8,9,9,100,23,66};
    int len=sizeof(array)/sizeof(int);
    for(int i=0; i<len; i++) //原始顺序输出
    cout<<array[i] <<",";
    cout <<"->原始数据输出";
    cout <<endl <<endl;


    QSort(array,0,len-1);
    for(int i=0; i<len; i++) //排序结果输出
    cout <<array[i]<<",";
    cout <<"->排序结果输出";
    cout <<endl;
    cin.get();

    }

    void BSort(int newarray[],int arraylen)
    {
    int temp;
    for(int j=1;j<arraylen;j++)
    {
    for(int i=0;i<arraylen-j;i++)
    {
    if(newarray[i]>newarray[i+1])
    {
    temp=newarray[i];
    newarray[i]=newarray[i+1];
    newarray[i+1]=temp;
    }
    }
    }
    }

    void ISort(int newarray[],int arraylen)
    {
    int loop,point;
    for(int i=1;i<arraylen;i++)
    {
    point=newarray[i];
    loop=i-1;
    while(loop>=0 && point<newarray[loop])
    {
    newarray[loop+1]=newarray[loop];
    newarray[loop]=point;
    loop--;
    }
    }
    }

    void QSort(int a[],int left,int right)
    {
    int point=a[right],l=left,r=right,temp;

    while(l<r)
    {
    //cout<<l<<"|"<<r<<endl;
    while(a[l]<=point && l<r) l++;
    while(a[r]>point && r>l)//这里r>l是因为第一次循环过后a[r]已经变成了8判断a[r]>7已经成立了会移动,利用r>l避免错位!
    {
    //cout<<a[r]<<"是当前的a[r]";//这里观察a[r]经过第一次循环后的变化!
    r--;
    }

    temp=a[l];
    a[l]=a[r];
    a[r]=temp;
    }
    if(left<l) QSort(a,left,l-1);
    if(right>r) QSort(a,r+1,right);



    对于第三种方法也就是QSort比较难理解,但的确是最快的方式!

    由于数组操作各种语言差不多,稍加修改后的涵数参数对于vb或者java同样是适用的!

    • 标签:
    • 入门级
    • qsort
    • temp
    • void
    • 中三
    • 重要
    • loop
    • newarray
    • 三种
    • 数据结构
    • int
    • point
  • 加入的知识群:
    学习元评论 (0条)

    评论为空
    聪明如你,不妨在这 发表你的看法与心得 ~



    登录之后可以发表学习元评论
      
暂无内容~~
顶部