排序

作者: 赋闲 | 来源:发表于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");
}

相关文章

  • 【恋上数据结构与算法二】(一)排序(Sorting)

    排序方法 冒泡排序 选择排序 堆排序 插入排序 归并排序 快速排序 希尔排序 计数排序 基数排序 桶排序 初识排序...

  • 排序-冒泡排序

    排序系列传递门 排序—选择排序排序—快速排序排序—插入排序排序-希尔排序(待完善)排序—归并排序(待完善)排序—基...

  • 排序

    冒泡排序: 冒泡排序 选择排序: 插入排序: 希尔排序: 归并排序: 快速排序: 堆排序: 计数排序: 桶排序: ...

  • Java | 10种排序算法

    冒泡排序 选择排序 插入排序 希尔排序 计数排序 基数排序 堆排序 归并排序 快速排序 桶排序

  • 常见的排序

    冒泡排序: 选择排序: 插入排序: 快速排序: 希尔排序: 归并排序: 堆排序: 计数排序: 桶排序: 基数排序:

  • 002--20200409刷题

    冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序

  • 排序

    排序 符号:Θ 插入排序 选择排序 堆排序 归并排序 冒泡排序 快速排序 桶排序 基数排序 计数排序 插入排序 插...

  • 排序 -- 选择/插入

    聊聊排序吧 冒泡排序 选择排序 插入排序 快速排序 归并排序 计数排序 桶排序 堆排序 本篇 选择排序与插入排序 ...

  • 前端基础整理 | 算法基础

    排序算法 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快速排序

  • Java 常见的 8 种排序算法(内排序)

    排序分类 内部排序 插入排序:直接插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:直接选择排序、堆排序...

网友评论

      本文标题:排序

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