main.cpp
▶
点击「播放动画」查看执行过程

课程总结

🏆

学习完成证书

同学

已完成「智创未来C++信息学竞赛课程」全部 18 章 137 课的学习

🏅 18 章全部完成 📚 137 课时 💪 竞赛编程基础

课程讲义

// ── 讲义代码高亮:加载完讲义后自动高亮所有代码块(与右侧演示区同一套着色)── // ── 自动检测完成进度 ── (function checkCompletion(){ if(!window.Engine) return; var _orig=Engine.loadLesson; Engine.loadLesson=function(id){ _orig.call(Engine,id); // 更新进度显示,检查是否全部完成 }; })(); // 页面初始化:根据 URL 参数加载课程 (function initPage(){ var params=new URLSearchParams(window.location.search); var lessonId=params.get('lesson')||'1_01'; var autoPlay=params.get('autoplay')==='1'; if(window.Engine&&Engine.loadLesson){ Engine.loadLesson(lessonId); if(autoPlay){ // 延迟等动画控制器就绪后自动播放 setTimeout(function(){ var btn=document.querySelector('.btn-run'); if(btn)btn.click(); else{ var checkPlay=setInterval(function(){ var b=document.querySelector('.btn-run'); if(b){clearInterval(checkPlay);b.click();} },200); } },500); } } // 确保课程初始加载后执行高亮 setTimeout(function(){highlightLectureCodes();},150); // 监听 lecture-content 内容变化,自动触发高亮和复制按钮 var lc=document.getElementById('lecture-content'); if(lc&&window.MutationObserver){ } initCommon(); })(); // ── 冒泡排序思维演示(练习区使用)── function runExBubble(btn){ var box=btn.closest('.ex-bubble-demo'); if(!box) return; var stage=box.querySelector('.ex-bubble-stage'); if(!stage) return; if(btn.dataset.running){ if(window._exBubblePaused){ window._exBubblePaused=false; btn.textContent='⏸ 暂停'; runBubbleStep(btn); }else{ window._exBubblePaused=true; btn.textContent='▶ 继续'; } return; } btn.dataset.running='1'; window._exBubblePaused=false; btn.textContent='⏸ 暂停'; // Reset stage stage.innerHTML=''; var arr=[5,6,4,3,7,2,8,1,9,0]; var n=arr.length; var status=box.querySelector('.ex-bubble-status'); if(status) status.textContent='准备开始排序...'; // Create bar chart var barWrap=document.createElement('div');barWrap.className='ex-bubble-bars';stage.appendChild(barWrap); var maxV=Math.max.apply(null,arr); var bars=[]; for(var i=0;i['+i2+']';row.appendChild(cell); } // Store state btn._arr=arr; btn._bars=bars; btn._n=n; btn._i=0; btn._j=0; btn._phase='compare'; btn._maxV=maxV; // Start animation window._exBubblePaused=false; runBubbleStep(btn); } function runBubbleStep(btn){ if(window._exBubblePaused) return; var arr=btn._arr,n=btn._n,bars=btn._bars,maxV=btn._maxV; var i=btn._i,j=btn._j; var stage=btn.closest('.ex-bubble-demo').querySelector('.ex-bubble-stage'); var statusEl=btn.closest('.ex-bubble-demo').querySelector('.ex-bubble-status'); function syncBars(){ for(var k=0;k=n-1){ document.getElementById('ebc0').classList.add('ex-bubble-ok'); bars[0].classList.add('ex-bubble-ok'); if(statusEl) statusEl.textContent='✅ 排序完成: ['+arr.join(', ')+']'; btn.textContent='🔄 重播'; btn._phase='done'; return; } if(j>=n-1-i){ document.getElementById('ebc'+(n-1-i)).classList.add('ex-bubble-ok'); bars[n-1-i].classList.add('ex-bubble-ok'); i++;j=0;btn._i=i;btn._j=j; btn._phase='compare'; if(i['+j+']'; if(lb) lb.innerHTML=arr[j+1]+'['+(j+1)+']'; syncBars(); j++;btn._j=j; btn._phase='compare'; setTimeout(function(){runBubbleStep(btn);},300); },400); } }