小工具知识网

当前位置: 首页 > 行业知识 > 数据结构 查找和排序算法

行业知识

数据结构 查找和排序算法

2026-11-07 09:17:52 来源:互联网转载

查找算法

顺序查找

顺序���找一般又称为线性查找,它对顺序表和线性表都适用。对于顺序表,可以通过数组下标递增来顺序扫描每一个元素;对于链表,可以通过指针next来依次扫描元素。

()

下面是示例代码

//int Search_Seq(int *data,int data_num,int key){    for(int i=0;i        if(data[i]==key)            return i;    }    return -1;}    int low=0,high=data_num-1;    int mid;    while(low        mid=(low+high)/2;        if(data[mid]==key)            return mid;        else if(data[mid]            high=mid-1;        }        else{            low=mid;        }    }    return -1;}   int i,j,low,high,mid;   for(i=1;i    low=0;    high=i-1;    int temp=data[i];    while (low       mid=(low+high)/2;       if(temp    int step,i,j;    for(step=n/2;step0;step/=2){        for(i=step+1;i            if(data[i]                int temp=data[i];                for(j=i-step;j0&&temp                    data[j+step]=data[j];                }                data[j+step]=temp;            }        }    }}    for(int i=0;i        bool flag=false;        for(int j=n-1;ji;j--){            if(data[j]                int temp=data[j];                data[j]=data[j-1];                data[j-1]=temp;                flag=true;            }        }        if(flag==false)            return;    }}    int pivot=data[low];    while(low        while(low    if(low        int pivotpos=Partition(data,low,high);        QuickSort(data,low,pivotpos-1);        QuickSort(data,pivotpos+1,high);    }}    for(int i=0;i        int min=i;        for(int j=i+1;j            if(data[min]data[j])                min=j;        }        if(min!=i){            int temp=data[i];            data[i]=data[min];            data[min]=temp;        }    }}    // data[0]=data[k];    int temp=data[k];    for(int i=2*k+1;i        if(i            data[k]=data[i];            k=i;        }    }    data[k]=temp;}void BuildMaxHeap(int *data,int len){    for(int i=len/2;i0;i--){        HeadAdjust(data,i-1,len);    }}void HeapSort(int *data,int len){    BuildMaxHeap(data,len);    for(int i=len-1;i1;i--){        int temp=data[i];        data[i]=data[0];        data[0]=temp;                HeadAdjust(data,0,i-1);        }}    int i,j,k;    for(k=low;k        if(b[i]    if(low        int mid=(low+high)/2;        MergeSort(data,low,mid);        MergeSort(data,mid+1,high);        Merge(data,low,mid,high);    }}

上一篇:苹果8xid操作秘籍,简洁上手,功能强大!

下一篇:蔬菜怎么读用英语怎么读?