排序算法

2019-04-03  本文已影响0人  小半_7a2b

均为C语言实现 操作对象均为一维int型数组

int array[5]={1,2,3,4,5};
int i;
int len=sizeof(array)/sizeof(array[0]); 
for(i=0;i<len/2;i++)
{
  int tmp=array[i];
  array[i]=array[len-i-1];
  array[len-i-1]=array[i];
}
int array[5]={3,4,1,5,2};
int i,j;
int len=sizeof(array)/sizeof(array[0]); 
for (i=0;i<len-1;i++)
  for(j=i+1;j<len;j++)
    {
      if (array[i]>array[j])
      {
      int tmp=array[i];
      array[i]=array[j];
      array[j]=tmp;
      }
    }
int array[5]={3,4,1,5,2};
int i,j;
int len=sizeof(array)/sizeof(array[0]); 
for (i=0;i<len-1;i++)
  for (j=0;j<len-1-i;j++)
    {
    if (array[j]>array[j+1])
      {
       int tmp=array[j];
       array[j]=array[j+1];
       array[j+1]=tmp;
      }
    }

另一种写法

int array[5]={3,4,1,5,2};
int i,j;
int len=sizeof(array)/sizeof(array[0]); 
for (i=len-1;i>0;i--)
  for(j=0;j<i;j++)
    {
        if (array[j]>array[j+1])
        {
          int tmp=array[j];
         array[j]=array[j+1];
         array[j+1]=tmp;
        }
    }
int array[5]={3,4,1,5,2};
int i,j;
int len=sizeof(array)/sizeof(array[0]); 
int b[len];               //禁止使用类似" b[len]={a[0]}"来初始化
b[0]=a[0];
for(i=1;i<len;i++)
{
    int tmp=a[i];
    j=i;
    while(j>0&&b[j-1]>tmp)
    {
        b[j]=b[j-1];
        j--;
    }                       //找出合适位置  
      b[j]=tmp;
}
for(i=0;i<len;i++)              //放回去
    {
    a[i]=b[i];
    }
int array[5]={3,4,1,5,2};
int i,j;
int len=sizeof(array)/sizeof(array[0]); 
int j;
for(i=1;i<len;i++)
{
  int tmp=a[i];
  j=i;
  while(j>0&&a[j-1]>tmp)
  {
      a[j]=a[j-1];
       j--;
   }                        //找出合适位置  
  a[j]=tmp;
}

int begin,time,end,mid;
while(1)
{
    printf("\ninput:\n");
    scanf("%d",&n);
    begin=0,time=0;
    end=sizeof(a)/sizeof(a[0])-1;
    while(begin<=end)
    {
        time++;
        mid=(begin+end)/2;
        if(a[mid]>n)
        {   
            end=mid-1;
        }
        else if(a[mid]<n)
        {
            begin=mid+1;
        }
        else
        {
            break;
        }
    }
    if(begin<=end) 
        printf("Looking for %d times to find \'%d\', located in the %d",time,n,mid);
    else 
        printf("Not Found\n");

上一篇下一篇

猜你喜欢

热点阅读