基本排序和简单选择排序

来源:互联网 发布:数据分析解决方案 编辑:程序博客网 时间:2024/05/21 23:01
今年面临考验和找工作的选择,在还没下定决心之前先做二者都需要的东西,《数据结构》和英语,英语就不说了。。。。
从今天起开始复习数据结构

今天做了最简单的基本排序和增强版简单选择排序
void swap(int *a,int *b){    int c ;    c= *a ;    *a = *b;    *b = c ;}void basisOrderUpLeft(int Arr[],int count){    int i,j;    for(i=0;i<count;i++)    {        for(j=i;j<count;j++)        {            if(Arr[j]<Arr[i])            swap(&Arr[j],&Arr[i]);        }    }    return ;}void basisOrderUpRight(int Arr[],int count){    int i,j;    for(i=count-1;i>-1;i--)    {        for(j=i;j>-1;j--)        {            if(Arr[j]>Arr[i])             swap(&Arr[j],&Arr[i]);        }    }    return ;}void basisOrderDownLeft(int Arr[],int count){        int i,j;        for(i=0;i<count;i++)        {            for(j=i;j<count;j++)            {                if(Arr[j]>Arr[i])                swap(&Arr[j],&Arr[i]);            }        }        return ;}void basisOrderDownRight(int Arr[],int count){        int i,j;        for(i=count-1;i>-1;i--)        {            for(j=i;j>-1;j--)            {                if(Arr[j]<Arr[i])                swap(&Arr[i],&Arr[j]);            }        }        return ;}
同时写了增序降序,从左从右四种组合。。可能看起来很愚笨,但是我相信量变产生质变

基本排序的思路是
找最小的放第一个,第二小的放第二个。。。
而找最小的思路就是找到小的就和现在认为最小的交换
代码风格就是两层循环同一终点,外层i值是内层循环的起点

但是频繁交换导致的就是很浪费时间(这设计底层的操作,能不交换还是尽量不交换)
所以产生了简单选择排序

void ChoiceOrder(int Arr[],int count){    int i,j,min;    for(i=0;i<count;i++)    {        min =i;            for(j=i;j<count;j++)        {            if(Arr[j]<Arr[min])            min = j ;        }        swap(&Arr[i],&Arr[min]);    }    return ;}

简单选择排序的特点就是找出最小的位置再交换而不是一旦找到小的就交换,所以可以节约很多时间
只要在其中加入一个min标记就可以了

今天就这样吧~

0 0
原创粉丝点击