开发者社区> 问答> 正文

中有一个排序算法,是否适合用opencl加速

中有一个排序算法,是否适合用opencl加速

展开
收起
知与谁同 2018-07-21 16:43:57 1547 0
1 条回答
写回答
取消 提交回答
  • 1、“快速排序法”使用的是递归原理,下面一个例子来说明“快速排序法”的原理。首先给出一个数组{53,12,98,63,18,72,80,46, 32,21},先找到第一个数--53,把它作为中间值,也就是说,要把53放在一个位置,使得它左边的值比它小,右边的值比它大。{21,12,32, 46,18,53,80,72,63,98},这样一个数组的排序就变成了两个小数组的排序--53左边的数组和53右边的数组,而这两个数组继续用同样的方式继续下去,一直到顺序完全正确。一般来说,冒泡法是程序员最先接触的排序方法,它的优点是原理简单,编程实现容易,但它的缺点就是速度太慢。
    2、快速排序代码:

    #include<stdio.h>
    void quicksort(int a[],int left,int right)
    {
    int i,j,temp;
    i=left;
    j=right;
    temp=a[left];
    if(left>right)
    return;
    while(i!=j)
    {
    while(a[j]>=temp&&j>i)
    j--;
    if(j>i)
    a[i++]=a[j];
    while(a[i]<=temp&&j>i)
    i++;
    if(j>i)
    a[j--]=a[i];

    }
    a[i]=temp;
    quicksort(a,left,i-1);
    quicksort(a,i+1,right);
    }
    void main()
    {
    int a[]={53,12,98,63,18,72,80,46,32,21};
    int i;
    quicksort(a,0,9);
    /*排好序的结果*/
    for(i=0;i<10;i++)
    printf("%4d\n",a[i]);
    }
    2019-07-17 22:50:07
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载