您的位置:首页 > 其它

快速排序 和 把一个无序的整形数组分成两部分(以数组第一个数为基准进行划分)

2017-02-24 11:55 543 查看
一: 把一个无序的整形数组分成两部分

把一个无序的整形数组分成左右两部分:以数组第一个数为基准进行划分,使得左边部分的任意一个数 都小于右边部分的任意一个数,并把基准数插到左边部分的最后一个位置

(或者右边部分的第一个位置)。

二 效果:



三 代码

//数组遍历
void PrintArray( int *a , int len)
{
int i = 0;
for (i = 0; i < len; i++)
{
printf("%d " , a[i]);
}
}

//快速排序
sort(int a[] , int len)
{
int i = 0, j = 0, tmp = 0 , t= 0 ,count=1;
tmp = a[0];
for (i = 0+1, j = len - 1; i <j; )
{
while (a[i]<=tmp)
{
i++;
}
while (a[j]>=tmp)
{
j--;
}
if (i < j)//这里一定要加上i小于j
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
printf("\n第%d次交换\n",count);
count = count + 1;
PrintArray(a, 10);

}

t = a[j];
a[j] = tmp;
a[0] = t;
}

void main()
{
int a[10] = { 3, 5, 2, 6, 0, 9, 7, 4, 8, 1 };
//数组遍历
printf("排序前:\n");
PrintArray(a , 10);
printf("\n");
sort(a,10);
printf("\n排序后:\n");
PrintArray(a,10);
getche();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐