排序

作者: 赋闲 | 来源:发表于2017-04-01 00:13 被阅读0次

    1.冒泡排序,2.选择排序,3.快速排序,4.插入排序

    几种常见的排序方式,速度是快排 >插入> 冒泡> 选择
    例子都是从小到大排序
    冒泡排序

    int main()
    {
    int ar[11];
    int i;
    srand(time(NULL));//伪随机数种子
    for(i = 0;i < 11;i++)
        ar[i] = rand()%100;//获取随机数
    int a,b;
    //排序
    for(a=0;a<10;a++)
    {
        for(b=0;b<10-a;b++)
        {
            if(ar[b]>ar[b+1])
            {
            //交换
            ar[b+1]=ar[b+1]+ar[b];
            ar[b]=ar[b+1]-ar[b];
            ar[b+1]=ar[b+1]-ar[b];
            }
        }
    }
    //打印
    for(i=0;i<10;i++)
    {
    printf("%d  ",ar[i]);
    }
    printf("\n");
    return 0;
    }
    

    选择排序

    int main()
    {
    int buf[10];
    int i;
    srand(time(NULL));
    for(i=0;i<10;i++)
        buf[i]=rand()%100;
    int j,k;
    
    for(j=0;j<9;j++)
        {
            for(k=j+1;k<10;k++)
            {
                if(buf[j]>buf[k])
                {
                    buf[k]=buf[k]+buf[j];
                    buf[j]=buf[k]-buf[j];
                    buf[k]=buf[k]-buf[j];
                }
            }
        }
    for(i=0;i<10;i++)
    {
    printf("%d  ",buf[i]);
    }
    printf("\n");
    return 0;
    }
    

    快速排序

    void sort(int *a, int left, int right)
    {
      if(left >= right)
      {
          return ;
      }
      int i = left;
      int j = right;
      int key = a[left];
       
      while(i < j) 
      {
          while(i < j && key <= a[j])//后一个判断决定顺序
          {
              j--;
          }
          a[i] = a[j];
          while(i < j && key >= a[i])
          {
              i++;
          }
          a[j] = a[i];
      }
      a[i] = key;
      sort(a, left, i - 1);//递归调用
      sort(a, i + 1, right);
    }
    int main()
    {
    int buf[10];
    int i=0,j=9;
    srand(time(NULL));
    for(j=0;j<10;j++)
      buf[j]=rand()%100;
    
    sort(buf,0,9);
    for(i=0;i<10;i++)
    {
    printf("%d  ",buf[i]);
    }
    printf("\n");
    }
    

    插入排序

    int main()
    {
    int R[10];
    int i,j;
    srand(time(NULL));
    for(j=0;j<10;j++)
        R[j]=rand()%100;
        int temp;
    for(i=1;i<10;i++)
    {
      if(R[i]<R[i-1]) 
      {
        temp=R[i];  
        j=i-1;
        do        
        {
            R[j+1]=R[j];
            j--;
        }
        while(temp<R[j]);
        if(j != i-1)
            R[j+1]=temp; 
      }
    }
    for(i=0;i<10;i++)
    {
    printf("%d  ",R[i]);
    }
    printf("\n");
    }
    

    相关文章

      网友评论

          本文标题:排序

          本文链接:https://www.haomeiwen.com/subject/flmpottx.html