s*********o 发帖数: 409 | 1 如题,本版编程高手很多,用c ,我的code 很stupid 如下:
for(i=0;i
{for(j=i+1;j
{if(SARAY[j]
{temp=SARAY[i];SARAY[i]=SARAY[j];SARAY[j]=temp;
怎么才能提速算法?多谢了! |
G***i 发帖数: 150 | 2 知道numerical 范围的话 如果不是很多 可以用 bucket 或者 radix sort O(n)
complexity
一般的话 comparison sort 直接上quick sort好了 average O(nlogn) |
s****b 发帖数: 2039 | 3 用合并排序?
【在 s*********o 的大作中提到】 : 如题,本版编程高手很多,用c ,我的code 很stupid 如下: : for(i=0;i: {for(j=i+1;j: {if(SARAY[j]: {temp=SARAY[i];SARAY[i]=SARAY[j];SARAY[j]=temp; : 怎么才能提速算法?多谢了!
|
s*********o 发帖数: 409 | 4 高手能否具体点?我的数字都是在0-1之间,概率,你说的实在听不懂,刚开始自学,
能否给个网页什么帮助的?多谢!
【在 G***i 的大作中提到】 : 知道numerical 范围的话 如果不是很多 可以用 bucket 或者 radix sort O(n) : complexity : 一般的话 comparison sort 直接上quick sort好了 average O(nlogn)
|
s*********o 发帖数: 409 | 5 范围是0-1之间,dimension是一百万,所以是一个一百万个scalar的vector去sort
【在 G***i 的大作中提到】 : 知道numerical 范围的话 如果不是很多 可以用 bucket 或者 radix sort O(n) : complexity : 一般的话 comparison sort 直接上quick sort好了 average O(nlogn)
|
n**x 发帖数: 854 | 6 void Quick_sort(int data[],int low,int high)
{
int mid;
if(low
{
mid=Partition(data,low,high);
Quick_sort(data,low,mid-1); /* 递归调用 */
Quick_sort(data,mid+1,high);
}
} |
G***i 发帖数: 150 | 7
https://cebulko.com/Programming-Resources/Introduction%20to%20Algorithms%20-
%20CLRS.pdf
到第200页 bucket sort 刚好适用你这种情况
没看到你刚才的回复 一百万太大了 还是用quick sort吧 我给你的pdf 还有前面筒子
回复的都有code
【在 s*********o 的大作中提到】 : 高手能否具体点?我的数字都是在0-1之间,概率,你说的实在听不懂,刚开始自学, : 能否给个网页什么帮助的?多谢!
|
s*********o 发帖数: 409 | 8 我的sorting的是0-1之间的概率,不是整数啊,是不是我没理解你的code的意思,小白
一个不好意思
【在 n**x 的大作中提到】 : void Quick_sort(int data[],int low,int high) : { : int mid; : if(low: { : mid=Partition(data,low,high); : Quick_sort(data,low,mid-1); /* 递归调用 */ : Quick_sort(data,mid+1,high); : } : }
|
s*********o 发帖数: 409 | 9 还有就是需要include 什么library吗?
【在 n**x 的大作中提到】 : void Quick_sort(int data[],int low,int high) : { : int mid; : if(low: { : mid=Partition(data,low,high); : Quick_sort(data,low,mid-1); /* 递归调用 */ : Quick_sort(data,mid+1,high); : } : }
|
s*********o 发帖数: 409 | 10 他那个是sort整数,我需要sort的是0.几的小数,是不是改成float就可以了?
20-
【在 G***i 的大作中提到】 : : https://cebulko.com/Programming-Resources/Introduction%20to%20Algorithms%20- : %20CLRS.pdf : 到第200页 bucket sort 刚好适用你这种情况 : 没看到你刚才的回复 一百万太大了 还是用quick sort吧 我给你的pdf 还有前面筒子 : 回复的都有code
|
|
|
G***i 发帖数: 150 | 11 我用c写过一个 从文件中读取 一百万个数字 用quicksort 排序的 你要要的话 私信我
我可以发给你 你改改就可以用
【在 s*********o 的大作中提到】 : 还有就是需要include 什么library吗?
|
G***i 发帖数: 150 | 12 他的那个code 缺了最关键的partition part
【在 s*********o 的大作中提到】 : 他那个是sort整数,我需要sort的是0.几的小数,是不是改成float就可以了? : : 20-
|
s******r 发帖数: 2876 | 13 c不是自带qsort吗?
我用c写过一个 从文件中读取 一百万个数字 用quicksort 排序的 你要要的话 私信我
我可以发给你 你改改就可以用
【在 G***i 的大作中提到】 : 我用c写过一个 从文件中读取 一百万个数字 用quicksort 排序的 你要要的话 私信我 : 我可以发给你 你改改就可以用
|
n*****t 发帖数: 22014 | 14 这种最初级的问题,网上随便狗一下大把答案,根本不该发帖问。编程最基本的要求是
学习能力,否则无法跟上知识的快速更新。如果你的职业或者工作内容不是马工,那另
当别论。
【在 s*********o 的大作中提到】 : 如题,本版编程高手很多,用c ,我的code 很stupid 如下: : for(i=0;i: {for(j=i+1;j: {if(SARAY[j]: {temp=SARAY[i];SARAY[i]=SARAY[j];SARAY[j]=temp; : 怎么才能提速算法?多谢了!
|
s*********o 发帖数: 409 | 15 老姜啊,我的确不是马工,工作内容也不是,我都说了刚开始学,以后不一定会用很多
所以求助,我调侃过你是郊区的,你现在别来报复哈,我真心象懂的人求教
【在 n*****t 的大作中提到】 : 这种最初级的问题,网上随便狗一下大把答案,根本不该发帖问。编程最基本的要求是 : 学习能力,否则无法跟上知识的快速更新。如果你的职业或者工作内容不是马工,那另 : 当别论。
|
B*Q 发帖数: 25729 | |
n**x 发帖数: 854 | 17 void Quick_sort(int data[],int low,int high)
{
int mid;
if(low
{
mid=Partition(data,low,high);
Quick_sort(data,low,mid-1); /* 递归调用 */
Quick_sort(data,mid+1,high);
}
}
int Partition(int data[],int low,int high)
{
int mid;
data[0]=data[low];
mid=data[low];
while(low < high)
{
while((low < high) && (data[high] >= mid))
{
--high;
}
data[low]=data[high]; /* 从high的位置开始往low的方向找,找到比data[low]小
的元素,存到data[low]中 */
while((low < high) && (data[low] < mid)) /* 新得到的data[low]肯定小于原来
的data[low]即mid */
{
++low;
}
data[high]=data[low]; /* 从low的位置开始往high的方向找,找到比data[high]
大的元素,存在data[high]中 */
}
data[low]=data[0]; /* 把low的新位置存上原来的data[low]的数据 */
return low; /* 递归时,把它做为右侧元素的low */
}
【在 s*********o 的大作中提到】 : 还有就是需要include 什么library吗?
|