- 论坛徽章:
- 0
|
上面是我自己弄错了 请看看下面的这个 最后一次把顺序乱了 帮忙看一下问题在哪儿- #include <assert.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int x[100];
- void swap(int ai,int bi)
- {
- int temp;
- if(x[ai] < x[bi])
- return ;
- else {
- temp = x[ai];
- x[ai] = x[bi];
- x[bi] = temp;
- }
- }
- int randint(int s,int e)
- {
- printf("s:%d\n",s);
- printf("e:%d\n",e);
- assert(s <= e);
- return rand()%(e - s);
- }
- void quicksort(int l,int u)
- {
- int i,m,temp;
- if(l >= u) return ;
- printf("l x[%d] %d\n",l,x[l]);
- printf("u x[%d] %d\n",u,x[u]);
- temp = randint(l,u);
- swap(l,temp);
- m = l;
- printf("m:%d\n",m);
- for(i = l+1;i <= u; i++)
- if(x[i] < x[l])
- swap(++m,i);
- swap(l,m);
- quicksort(l,m-1);
- quicksort(m+1,u);
- }
- int main(int argc,char *argv[])
- {
- int i = 0,m,j,n;
- int *pi;
- char a;
- printf("input number of data : exp 2 5 6 8 enter\n");
- while(scanf("%d",&x[i++]),(a = getchar()) != '\n')
- ;
- pi = x;
- //x[i+1] = '\0';
- for(j = 0;j < i; j++){
- printf("%d,",pi[j]);
- }
- printf("\nx :%d",sizeof(x));
- printf("\npi :%d",sizeof(pi));
- m = sizeof(pi)/sizeof(*pi);
- n = sizeof(x)/sizeof(*x);
- printf("\nm %d",m);
- printf("\nn %d\n",n);
- m = i - 1;
- quicksort(0,m);
- for(j = 0;j < i;j++)
- {
- printf("x[%d] %d\t,",j,x[j]);
- }
- getchar();
- return 0;
- }
复制代码 |
|