zoukankan      html  css  js  c++  java
  • A1098 Insertion or Heap Sort (25分)

    一、技术总结

    1. 这是一道考查插入排序和堆排序的问题。
    2. 这里开始最主要的问题是,没有理解堆排序。堆排序是通过把数组中第一个元素与最后一个元素交换,然后再对于第一个元素进行向下调整downAdjust函数。
    3. 所以这里对于插入排序,只要一直遍历发现第一个元素的比前一个元素小,记录下这时的下标。然后同时后面的元素与原数组相同,那么就是插入排序。
    4. 对于堆排序怎么知道到哪一步,根据堆排序的特点知道。是通过从后往前交换元素,然后使用downAdjust函数调整,所以要判断,就从后往前判断,如果出现当前元素,比首位元素小,说明排序进行到此处。

    二、参考代码

    #include<bits/stdc++.h>
    using namespace std;
    void downAdjust(vector<int> &b, int low, int high){
    	int i = 1, j = 2*i;
    	while(j <= high){
    		if(j+1 <= high && b[j] < b[j+1]){
    			j = j + 1;
    		}
    		if(b[i] < b[j]){
    			swap(b[i], b[j]);
    			i = j;
    			j = i*2;
    		}else{
    			break;
    		}
    	}
    }
    int main(){
    	int n, p = 2;
    	scanf("%d", &n);
    	vector<int> a(n+1), b(n+1);
    	for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
    	for(int i = 1; i <= n; i++) scanf("%d", &b[i]);
    	while(p <= n && b[p-1] <= b[p]) p++;
    	int index = p;
    	while(p <= n && a[p] == b[p]) p++;
    	if(p == n+1){
    		printf("Insertion Sort
    ");
    		sort(b.begin()+1, b.begin()+index+1);
    	}else{
    		printf("Heap Sort
    ");
    		p = n;
    		while(p > 2 && b[p] >= b[1]) p--;
    		swap(b[1], b[p]);
    		downAdjust(b, 1, p-1);
    	}
    	printf("%d", b[1]);
    	for(int i = 2; i <= n; i++){
    		printf(" %d", b[i]);
    	}
    	return 0;
    	
    }
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    STM32F407Discovery开发板使用环境搭建
    NIO初识
    Mac下Boost环境搭建
    Android Studio增加NDK代码编译支持--Mac环境
    LNMP平台搭建---PHP安装篇
    LNMP平台搭建---MySQL安装篇
    支付系统流程
    从html字符串中获取div内容---jquery
    记一次进入新公司快速融入开发团队经历
    DataTable复制自身行
  • 原文地址:https://www.cnblogs.com/tsruixi/p/12354450.html
Copyright © 2011-2022 走看看