鱼C论坛

 找回密码
 立即注册

-每日一算 9.27 #快速排序——二分法排序#

热度 1已有 384 次阅读2016-9-28 00:19 |个人分类:啊哈!算法

/*
里面有个迭代思想哦
写出来简直感觉打通了任督二脉
如果连迭代都能搞定,后边的链表更不在话下了
*/
#include <stdio.h>
#define MAX 1024 //a数组元素个数上线 

int a[MAX] ;
/*
作用:数组a快速排序
参数:最左最右下标 
*/
void swap(int left, int right)
{
int i, j, x, temp;  //i\j作为下标负责向右/左移动  
i = left;
j = right;
if(left > right)
return ; 
 
x = a[left];  //基准数 
//将基准值归位 
while (i != j)
{
while (a[j] >= x && j > i)
{
j--;
}
while (a[i] <= x && i < j)
{
i++;
}
if (i < j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}


a[left] = a[i];
a[i] = x;
//二分法迭代 
swap(left, i - 1);
swap(i + 1, right);
return;
}

int main()
{

int i = 0;
int j = 0; //输入整数的个数 
//输入要排序的整数
printf("请输入要排序的整数:\n");
do
{
scanf("%d", &a[i]);
i++;
} while (getchar() != '\n');
a[i] = '\0';
//进行快速排序
j = i;
swap(0, j - 1);
//输出
for(i = 0; i < j; i++)
{
printf("%d ", a[i]);
return 0;
}
1

路过

鸡蛋

鲜花

握手

雷人

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 22:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部