楼主你错误的原因是你的程序中没有保证指针k和m指向的始终是相邻的两个元素,而冒泡排序法始终是在比较两个相邻的元素再进行交换的。
程序代码:
#include<stdio.h> #include<stdlib.h> #define N 4 //数组取小些,方便输入 ,可以改成10 int main() { void sort(int *x); int a[N],*p; for(p=a;p<(a+N);p++) scanf("%d",p); p=a; sort(p); for(p=a;p<(a+N);p++) printf("%5d",*p); printf("\n"); system("pause"); } void sort(int *x) { int *k,*m,temp; for(k=x;k<(x+N);k++) { for(m=k;m<(x+N-1);m++) { // *t=*k; 这部分改了 if(*m<*(m+1)){ //temp=*t; // *t=*m; // *m=temp;} temp=*m; *m=*(m+1); *(m+1)=temp; } } } }