1098. Insertion or Heap Sort
2016-06-09 17:11
357 查看
堆排序都快不会写了。。。加油啊。。。
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void adjust(int *num, int x, int endd)
{
int bigger = x;
if(2*x + 1 > endd)
return;
bigger = 2*x + 1;
if(bigger + 1 <= endd)
{
if(num[bigger] < num[bigger+1])
bigger++;
}
if(num[bigger] < num[x])
return ;
int temp = num[bigger];
num[bigger] = num[x];
num[x] = temp;
adjust(num,bigger,endd);
}
int main()
{
int n;
int *original;
int *particle;
int type = 2;
scanf("%d", &n);
original = new int
;
particle = new int
;
for(int i = 0; i < n; i++)
scanf("%d", original+i);
for(int i = 0; i < n; i++)
{
scanf("%d", particle+i);
if(i == 1)
{
if(particle[1] >= particle[0])
type = 1;
}
}
if(type == 1)
{
printf("Insertion Sort\n");
for(int i = 1; i < n; i++)
{
if(particle[i] < particle[i-1])
{
int temp = particle[i];
int j;
for(j = i-1; j >= 0 && particle[j] > temp; j--)
particle[j+1] = particle[j];
particle[j+1] = temp;
break;
}
}
}
else
{
printf("Heap Sort\n");
int temp;
int j;
for(j = n-1; j >= 0; j--)
{
if(particle[0] > particle[j])
{
temp = particle[0];
particle[0] = particle[j];
particle[j] = temp;
break;
}
}
int father;
int x = j-1;
int t;
while(x)
{
father = (x-1) / 2;
if(particle[father] < particle[x])
{
temp = particle[x];
particle[x] = particle[father];
particle[father] = temp;
adjust(particle, x, j-1);
}
x = father;
}
}
for(int i = 0; i < n; i++)
{
if(i == 0)
printf("%d", particle[i]);
else
printf(" %d", particle[i]);
}
return 0;
}
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void adjust(int *num, int x, int endd)
{
int bigger = x;
if(2*x + 1 > endd)
return;
bigger = 2*x + 1;
if(bigger + 1 <= endd)
{
if(num[bigger] < num[bigger+1])
bigger++;
}
if(num[bigger] < num[x])
return ;
int temp = num[bigger];
num[bigger] = num[x];
num[x] = temp;
adjust(num,bigger,endd);
}
int main()
{
int n;
int *original;
int *particle;
int type = 2;
scanf("%d", &n);
original = new int
;
particle = new int
;
for(int i = 0; i < n; i++)
scanf("%d", original+i);
for(int i = 0; i < n; i++)
{
scanf("%d", particle+i);
if(i == 1)
{
if(particle[1] >= particle[0])
type = 1;
}
}
if(type == 1)
{
printf("Insertion Sort\n");
for(int i = 1; i < n; i++)
{
if(particle[i] < particle[i-1])
{
int temp = particle[i];
int j;
for(j = i-1; j >= 0 && particle[j] > temp; j--)
particle[j+1] = particle[j];
particle[j+1] = temp;
break;
}
}
}
else
{
printf("Heap Sort\n");
int temp;
int j;
for(j = n-1; j >= 0; j--)
{
if(particle[0] > particle[j])
{
temp = particle[0];
particle[0] = particle[j];
particle[j] = temp;
break;
}
}
int father;
int x = j-1;
int t;
while(x)
{
father = (x-1) / 2;
if(particle[father] < particle[x])
{
temp = particle[x];
particle[x] = particle[father];
particle[father] = temp;
adjust(particle, x, j-1);
}
x = father;
}
}
for(int i = 0; i < n; i++)
{
if(i == 0)
printf("%d", particle[i]);
else
printf(" %d", particle[i]);
}
return 0;
}
相关文章推荐
- NAND flash和NOR flash的区别详解
- 使用SSH传输文件/文件夹
- PL/SQL Developer 如何显示行号
- Python学习
- (二)javascript的数据类型
- 嵌入式C语言程序存储特点
- lsof
- 全球知名大学课件下载地址汇总
- DevExpress的GridControl的实时加载数据解决方案(取代分页)
- 319. Bulb Switcher
- 欢迎使用CSDN-markdown编辑器
- 大学毕业4年-回顾和总结(10)-文档化战略,执行最成功的战略,堪比我人生中的“隆中对”(战略在前,成果在后)
- 大学毕业4年-回顾和总结(10)-文档化战略,执行最成功的战略,堪比我人生中的“隆中对”(战略在前,成果在后)
- 大学毕业4年-回顾和总结(10)-文档化战略,执行最成功的战略,堪比我人生中的“隆中对”(战略在前,成果在后)
- 用LaTeX写线性规划
- hadoop环境搭建
- u-boot
- leetcode-Merge k Sorted Lists-23(未完待续)
- codevs 1033 蚯蚓的游戏问题
- TC 8.52a 32位绿色精简版