{
T mid=a[(left+right)/2]
long long i=left,j=right
while(i<j)
{
while(a[i]<mid) ++i
while(a[j]>mid) --j
if(i<=j)
{
swap_num(*i,*j)
++i
--j
}
}
if(left<j)
nv_sort(left,j)
if(i<right)
nv_sort(i,right)
}
将a[i]<mid a[j]>mid改为a[i]>mid,a[j]<mid就是从大到小排,a是数组名
将此函数放入类内即可
#include"stdio.h"#include"stdlib.h"
//升序排序函数
void upsort(int *m,int n) //m为数组名即数组首地址,n为数组元素个数
{
int i,j,temp //循环变量及临时变量
int *p,*s //p为数组首地址,s为数组尾地址
s=m+n-1
for(i=0i<n-1i++) //冒泡排序法
{ for(p=mp<s-ip++)
{ if(*p>*(p+1))
{ temp=*p
*p=*(p+1)
*(p+1)=temp
}
}
}
}
//调用示例
main()
{
int i
int num[10]={2,7,6,9,0,4,1,8,5,3}
printf("原数组为:\n")
for(i=0i<=9i++)
printf("%3d",num[i])
upsort(num,10)
printf("\n调用排序函数后,数组中元素为\n")
for(i=0i<=9i++)
printf("%3d",num[i])
printf("\n")
}
代码文本:
#include "stdio.h"
#include <stdlib.h>
#include "time.h"
#define N 37
int main(int argc,char *argv[]){
int a[N]
void myset(int *,int)
void mysort(int *,int)
void myout(int *,int,int x=0)
myset(a,N)
myout(a,N)
mysort(a,N)
myout(a,N,1)
return 0
}
void myset(int *p,int n){//随机数生成函数
srand((unsigned)time(NULL))
for(n--n>=0p[n--]=rand()%9000+1000)
}
void mysort(int *p,int n){//选择法排序
int i,j,k
for(i=0i<ni++){
for(k=i,j=k+1j<nj++)
if(p[k]<p[j])
k=j
if(k-i)
j=p[k],p[k]=p[i],p[i]=j
}
}
void myout(int *p,int n,int x=0){//输出函数
int i,k
puts(x==0 ? "Before ordering:" : "After ordering:")
for(k=i=0i<ni++)
printf(++k%10 ? "%5d" : "%5d\n",p[i])
if(k%10)
putchar('\n')
}
供参考……
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)