#include <stdlib.h>
void sort(int [], const int, int (*)(int, int))
void swap(int*, int*)
int ascending(int, int)
int descending(int, int)
int main()
{
int i,n,*p
printf("input n:")
scanf("%d",&n)
p=(int*)malloc(n*sizeof(int))
if(!p){printf("malloc err")exit(0)}
printf("input %d number:\n",n)
for(i=0i<ni++)scanf("%d",p+i)
printf("1:ascending\n2:descending\n")
scanf("%d",&i)
if(i==1)sort(p,n,ascending)
if(i==2)sort(p,n,descending)
for(i=0i<困铅ni++)printf("%d ",p[i])
return 0
}
void sort(int items[], const int count, int (*cmp)(int, int))
//没看清,之悔尺拦碧胡前是冒泡,不是选择
{
int a,b,c,exchange,t
for(a=0a<count-1++a)
{
exchange=0
c=a
t=items[a]
for(b=a+1b<count++b)
{
if(cmp(t,items[b]))
{
c=b
t=items[c]
exchange=1
}
}
if(exchange)swap(&items[c],&items[a])
}
}
void swap(int *a,int *b)
{
int t=*a
*a=*b
*b=t
}
int ascending(int a, int b)
{
if(a>b)return 1
return 0
}
int descending(int a, int b)
{
if(a<b)return 1
return 0
}
#include<stdio.h>void sx(int *,int)//升序
void jx(int *,int)//降序
void printfNums(int *,int)//打印数组
int main()
{
int nums[]={10,15,14,16,9},n=5,*p//n:数组个数
p=nums
printf("升序排列:\n")
sx(p,n)
printfNums(p,n)
printf("降序排列:\n")
jx(p,n)
printfNums(p,n)
return 判笑0
}
void printfNums(int * p,int n)//打印数组
{
int i
printf("\n")
物烂for(i=0i<ni++)
printf("%d ",p[i])
printf("\n")
}
void sx(int * p,int n)//升序
{
int i,j,num
for(j=0j<=n-1j++)
{
for(i=j+1i<ni++)
{
if(p[j]>p[i])
{
num=p[j]
p[j]=p[i]
p[i]=num
}
}
}
}
void jx(int * p,int n)//降序
{
int i,j,num
for(j=0j<=n-1j++)
{
for(i=j+1i<ni++)
{
if(p[j]<p[i])
{
罩冲漏 num=p[j]
p[j]=p[i]
p[i]=num
}
}
}
}
以下C++程序在VC6.0下调试通过:#include "iostream.h"
/* 对数组startIndex位置起,长度为length的元素进晌告岁行降序排列 */
void sort(int arr[], int startIndex, int length)
{
int i, j, k
int temp
for(i=0i<length-1i++)
{
k = i
for(j=i+1j<lengthj++)
if(arr[j+startIndex] >arr[k+startIndex])
k = j
if(k != i)
{
temp = arr[k+startIndex]
arr[k+startIndex] = arr[i+startIndex]
arr[i+startIndex] = temp
}
}
}
void main()
{
int arr[] = {2,4,6,8,10,12,14,16,18,20}
int size = 10
int startIndex = 3, length = 5
int i
cout<<友虚"before sort : "<<endl
for(i=0i<sizei++)
cout<<arr[i]<<" "宴睁
cout<<endl
sort(arr, startIndex, length)
cout<<"after sort : "<<endl
for(i=0i<sizei++)
cout<<arr[i]<<" "
cout<<endl
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)