#include<stdio.h>int main(){ int sort(int *p,int n); int a[10]={1,2,3,4,5,6,17,8,9,12}; int *p; p=a; sort(p,10); for(int i=0;i<10;i++) { printf('%d\t',a[i]); } return 0;}int sort(int *p,int n){ int swap(int *p1,int *p2); int i,j,k; int temp; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(*(p+k)<*(p+j))k=j; } if(k!=i) { swap(p+k,p+i);//temp=*(p+i);*(p+i)=*(p+k);*(p+k)=temp; } } return 0;}int swap(int *p1,int *p2){ int temp; temp=*p1;*p1=*p2;*p2=temp; return 0;} 第一次写的时候运行出错,错在sort函数第二个for循环里面,比较与交换的两个对象错了,应该是标志k,以及查找到的最大值J进行交换。 |
|