快速排序算法,感觉写的很乱,上面的是第一次排序,下面的是递归算法

来源:互联网 发布:周扬青淘宝店链接 编辑:程序博客网 时间:2024/06/05 09:56
#include<stdio.h>
#include <stdlib.h>
#include <memory.h>




int main(void)
{
int a[7] = {7,8,1,5,2,3,4};

int i=0,j=7-1;
int k =0;

int key = a[0];
int tmp = 0;

while(i < j)
{
while(j>=0 && i<j)
{
if(a[j]<key)
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++;
break;
}
j--;
}

while(i<7 && i<j)
{
if(a[i]>key)
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
j--;
break;
}
i++;
}
}
for (k=0;k<7;k++)
{
printf("%d ",a[k]);
}


return 0;

}


#include<stdio.h>
#include <stdlib.h>
#include <memory.h>


int change(int a[],int i,int j)
{
int key = a[i];
int tmp = 0;

while(i < j)
{
while(j>=0 && i<j)
{
if(a[j]<key)
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++;
break;
}
j--;
}

while(i<7 && i<j)
{
if(a[i]>key)
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
j--;
break;
}
i++;
}
}

return i;

}




void change1(int a[],int i,int j)
{
int pivottag = 0;

if (i<j)
{
pivottag = change(a,i,j);
change1(a,pivottag+1,j);
change1(a,i,pivottag-1);
}
}




int main(void)
{
int a[7] = {7,8,1,5,2,3,4};




int i=0,j=7-1;
int k =0;


change1(a,0,6);

for (k=0;k<7;k++)
{
printf("%d ",a[k]);
}

return 0;

}

原创粉丝点击