C++中设计一个名为Mysort的排序类,要求能够对任意个整数进行升序和降序.请写出完整程序?

C++中设计一个名为Mysort的排序类,要求能够对任意个整数进行升序和降序.请写出完整程序?,第1张

void sort(long long left,long long right)

{

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')

}

供参考……


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12154355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存