#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函數(shù)第二個for循環(huán)里面,比較與交換的兩個對象錯了,應(yīng)該是標(biāo)志k,以及查找到的最大值J進(jìn)行交換。 |
|