|  | 
 
| 
本帖最后由 Julia999 于 2019-7-31 18:26 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  折半查找(每次取一半)
 
 排序:
 冒泡(两个两个进行比较,以满足条件的排序交换位置)
 插入(一个一个往前插,保证前面的插入的都有序)
 选择(从所有的元素里面找到最小的跟第一个互换,把剩下找到最小的跟第二个互换.....)
 快速排序(先找到第一个元素的确切位置,这个时候将元素分成了两半,分别找到左边的第一个元素的确切位置,以及右边第一个元素的确切位置,不断重复操作(递归的思想))
 归并排序(先两个两个拍,再四个四个排,再八个八个排....,最终整体排)
 
 
 在这里给出快速排序的代码:
 
 复制代码#include<stdio.h>
void QuickSort(int *a,int low,int high)
{
        int pos;
        if(low<high)
        {
                pos=FindPos(a,low,high);
                QuickSort(a,low,pos-1);
                QuickSort(a,pos+1,high);
        }
}
int FindPos(int *a,int low,int high)
{
        int val=a[low];
        while(low<high)
        {
                while(low<high&&a[high]>=val)
                {
                        --high;
                }
                a[low]=a[high];
                while(low<high&&a[low]<=val)
                {
                        ++low;
                }
                a[high]=a[low];
        }//终止外循环之后,low和high是相等的
        a[low]=val;
        return low;
}
int main()
{
        int a[6]={2,1,0,5,4,3};
        int i;
        QuickSort(a,0,5);  //第二个参数表示第一个元素的下标,第三个参数表示最后一个元素的下标
        for(i=0;i<6;i++)
        {
                printf("%d",a[i]);
        }
        printf("\n");
        return 0;
}
排序和查找的关系
 排序是查找的前提
 排序是重点
 
 
 
 
 
 | 
 |