轻院1362: 绝对值排序
2017-06-15 19:26
134 查看
用快速排序写该题:
#include<stdio.h>
#include<math.h>
int a[102] = {0};
void Quicksort(int left, int right)
{
int i,j,t,temp,k;
if(left > right)
return;
temp = a[left];
k = abs(a[left]);
i = left;
j = right;
while(i != j)
{
while(abs(a[j]) <= k && i < j)
j--;
while(abs(a[i]) >= k && i < j)
i++;
if(i < j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];
a[i] = temp;
Quicksort(left, i-1);
Quicksort(i+1, right);
}
int main()
{
int i,n;
while(scanf("%d",&n) ,n != 0)
{
for(i = 0; i < n; i++)
scanf("%d",&a[i]);
Quicksort(0, n-1);
for(i = 0; i < n - 1; i++)
printf("%d ",a[i]);
printf("%d\n",a[n-1]);
}
return 0;
}
#include<stdio.h>
#include<math.h>
int a[102] = {0};
void Quicksort(int left, int right)
{
int i,j,t,temp,k;
if(left > right)
return;
temp = a[left];
k = abs(a[left]);
i = left;
j = right;
while(i != j)
{
while(abs(a[j]) <= k && i < j)
j--;
while(abs(a[i]) >= k && i < j)
i++;
if(i < j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];
a[i] = temp;
Quicksort(left, i-1);
Quicksort(i+1, right);
}
int main()
{
int i,n;
while(scanf("%d",&n) ,n != 0)
{
for(i = 0; i < n; i++)
scanf("%d",&a[i]);
Quicksort(0, n-1);
for(i = 0; i < n - 1; i++)
printf("%d ",a[i]);
printf("%d\n",a[n-1]);
}
return 0;
}
相关文章推荐
- 杭电ACM2020:绝对值排序
- HDOJ2020绝对值排序
- hdu 2020 绝对值排序
- 杭电ACM 2020:绝对值排序
- 2020绝对值排序
- HDU 2020 绝对值排序 堆优化
- hdoj_2020 绝对值排序
- j绝对值排序
- 绝对值排序(杭电2020)
- hd 2020 绝对值排序
- HDU 2020 绝对值排序
- YT14-先来练练手之绝对值排序
- 绝对值排序(HDU2020)
- HDU 2020 绝对值排序
- 使用C++标准模板库,实现绝对值排序
- 编程算法 - 将排序数组按绝对值大小排序 代码(C)
- HDOJ&nbsp;&nbsp;&nbsp;2020&nbsp;&nbsp;&nbsp;绝对值排序
- HDOJ2020 ( 绝对值排序 ) 【水题】
- 1231绝对值排序
- hdoj 2020 绝对值排序