行业知识
数据结构 查找和排序算法
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); }}
下一篇:蔬菜怎么读用英语怎么读?