现在的位置: 首页 > 综合 > 正文

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

2013年10月11日 ⁄ 综合 ⁄ 共 849字 ⁄ 字号 评论关闭

#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;

}

抱歉!评论已关闭.