1var de=Object.defineProperty;var Q=l=>{throw TypeError(l)};var ce=(l,e,t)=>e in l?de(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var y=(l,e,t)=>ce(l,typeof e!="symbol"?e+"":e,t),X=(l,e,t)=>e.has(l)||Q("Cannot "+t);var b=(l,e,t)=>(X(l,e,"read from private field"),t?t.call(l):e.get(l)),q=(l,e,t)=>e.has(l)?Q("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(l):e.set(l,t),L=(l,e,t,i)=>(X(l,e,"write to private field"),i?i.call(l,t):e.set(l,t),t);var U=(l,e,t,i)=>({set _(s){L(l,e,s,t)},get _(){return b(l,e,i)}});import{o as c,c as v,a as u,x as z,y as ee,k as te,t as $,z as se,A as ve,F as S,r as O,u as o,s as pe,i as ie,m as M,B as me,f as k,C as he,d as xe,g,D as Z,w as P,e as F,h as J,b as I,n as K}from"./index-C9QynmRy.js";import{r as fe}from"./Algebra-BcYAocAy.js";function be(l,e){return c(),v("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[u("path",{d:"M8.5 4.75a.75.75 0 0 0-1.107-.66l-6 3.25a.75.75 0 0 0 0 1.32l6 3.25a.75.75 0 0 0 1.107-.66V8.988l5.393 2.921A.75.75 0 0 0 15 11.25v-6.5a.75.75 0 0 0-1.107-.66L8.5 7.013V4.75Z"})])}function ge(l,e){return c(),v("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[u("path",{d:"M2.53 3.956A1 1 0 0 0 1 4.804v6.392a1 1 0 0 0 1.53.848l5.113-3.196c.16-.1.279-.233.357-.383v2.73a1 1 0 0 0 1.53.849l5.113-3.196a1 1 0 0 0 0-1.696L9.53 3.956A1 1 0 0 0 8 4.804v2.731a.992.992 0 0 0-.357-.383L2.53 3.956Z"})])}function we(l,e){return c(),v("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[u("path",{d:"M4.5 2a.5.5 0 0 0-.5.5v11a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5h-1ZM10.5 2a.5.5 0 0 0-.5.5v11a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5h-1Z"})])}function ye(l,e){return c(),v("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[u("path",{d:"M3 3.732a1.5 1.5 0 0 1 2.305-1.265l6.706 4.267a1.5 1.5 0 0 1 0 2.531l-6.706 4.268A1.5 1.5 0 0 1 3 12.267V3.732Z"})])}function Se(l,e){return c(),v("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[u("path",{d:"M7.557 2.066A.75.75 0 0 1 8 2.75v10.5a.75.75 0 0 1-1.248.56L3.59 11H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1.59l3.162-2.81a.75.75 0 0 1 .805-.124ZM12.95 3.05a.75.75 0 1 0-1.06 1.06 5.5 5.5 0 0 1 0 7.78.75.75 0 1 0 1.06 1.06 7 7 0 0 0 0-9.9Z"}),u("path",{d:"M10.828 5.172a.75.75 0 1 0-1.06 1.06 2.5 2.5 0 0 1 0 3.536.75.75 0 1 0 1.06 1.06 4 4 0 0 0 0-5.656Z"})])}function ke(l,e){return c(),v("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[u("path",{d:"M7.557 2.066A.75.75 0 0 1 8 2.75v10.5a.75.75 0 0 1-1.248.56L3.59 11H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1.59l3.162-2.81a.75.75 0 0 1 .805-.124ZM11.28 5.72a.75.75 0 1 0-1.06 1.06L11.44 8l-1.22 1.22a.75.75 0 1 0 1.06 1.06l1.22-1.22 1.22 1.22a.75.75 0 1 0 1.06-1.06L13.56 8l1.22-1.22a.75.75 0 0 0-1.06-1.06L12.5 6.94l-1.22-1.22Z"})])}const Ce={class:"w-full mx-auto"},Ae={for:"countries",class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},Ve={selected:"",disabled:""},Me=["value"],Be={__name:"Select",props:z({options:{type:Array},label:String,returnValue:{type:String,default:null}},{modelValue:{},modelModifiers:{}}),emits:z(["change","update:modelValue"],["update:modelValue"]),setup(l,{emit:e}){const t=l,i=e,s=ee(l,"modelValue",{set:d=>{let x=n.value.find(W=>W.value===d);return t.returnValue?x[t.returnValue]:x}}),n=te(()=>t.options.map(d=>typeof d=="object"?d:{label:d,value:d})),p=()=>{let d=t.returnValue?s.value[t.returnValue]:s.value;console.log("value to emit",s.value,t.returnValue,d),i("change",d)};return(d,x)=>(c(),v("form",Ce,[u("label",Ae,$(l.label),1),se(u("select",{"onUpdate:modelValue":x[0]||(x[0]=w=>s.value=w),onChange:p,id:"countries",class:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"},[u("option",Ve,$(l.label),1),(c(!0),v(S,null,O(o(n),w=>(c(),v("option",{value:w.value},$(w.label),9,Me))),256))],544),[[ve,s.value]])]))}},T={__name:"Button",props:{disabled:{type:Boolean,default:!1},color:{type:String,default:"primary",required:!1,validator:l=>["primary","success","warning","warn","danger","error"].includes(l)}},setup(l){const e=l,t=te(()=>{let i=[];const s={primary:["bg-primary text-white"],success:["bg-green-500 text-slate-900"],warning:["bg-amber-500 text-slate-900"],warn:["bg-amber-500 text-slate-900"],danger:["bg-red-500 text-white"],error:["bg-red-500 text-white"]};return i.push(s[e.color]),e.disabled&&i.push("disabled"),i});return(i,s)=>(c(),v("button",{class:ie(["select-none h-10 flex items-center justify-center",o(t)])},[pe(i.$slots,"default")],2))}},qe={class:"flex flex-col justify-center flex-1 w-full"},Pe={key:0,for:"default-range",class:"block mb-2 text-sm font-medium text-gray-900 dark:text-white"},Te=["min","max","step"],_e={__name:"Range",props:z({label:String,min:[String,Number],max:[String,Number],step:[String,Number]},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const e=ee(l,"modelValue");return(t,i)=>(c(),v("div",qe,[l.label?(c(),v("label",Pe,$(l.label),1)):M("",!0),se(u("input",{id:"default-range",type:"range","onUpdate:modelValue":i[0]||(i[0]=s=>e.value=s),min:l.min,max:l.max,step:l.step,class:"w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"},null,8,Te),[[me,e.value]])]))}},_=(l,e,t,i,s)=>(l-e)*(s-i)/(t-e)+i,Y=l=>new Promise(e=>setTimeout(e,l)),$e=l=>le.find(e=>e.name===l.state).color,je=(l,e)=>Math.max(l.value/Math.max(...e.map(t=>t.value))*100,1),le=[{name:"sorted",color:"#4fd967",label:"Trié"},{name:"unsorted",color:"#d94f4f",label:"Pas triée"},{name:"processing",color:"#0bf5e8",label:"En traitement"},{name:"save",color:"#e17b30",label:"En état de sauvegarde"},{name:"temp",color:"#83239e",label:"Ãtat temporaire"}];var j,C,A;class V{constructor(){q(this,j);q(this,C,[]);q(this,A,0)}get serie(){return b(this,j)}set serie(e){if(!(e instanceof ne))throw"Given serie argument is not an instance of 'Serie'";L(this,j,e)}get steps(){return b(this,C)}saveStep(e,t){b(this,C).push({type:e,step:t})}next(){return U(this,A)._++,b(this,C)[b(this,A)-1]}prev(){return U(this,A)._--,b(this,C)[b(this,A)+1]}async play(){for(let e=0;e<this.steps.length;e++)this.next()}validate(){for(let e=0;e<this.serie.numbers.length;e++)this.saveStep("processing",{index:e}),this.saveStep("sorted",{index:e})}}j=new WeakMap,C=new WeakMap,A=new WeakMap;var R;class ne{constructor(){q(this,R,0);y(this,"numbers",[]);y(this,"sort");y(this,"onUpdateCallback")}get min(){return Math.min(...this.numbers.map(e=>e.value))}get max(){return Math.max(...this.numbers.map(e=>e.value))}set length(e){e<5?e=5:e>200&&(e=200),L(this,R,e)}get length(){return b(this,R)}setSort(e){if(!(e instanceof V))throw"The sort argument given is not an instance of 'SortComponent'";e.serie=this,this.sort=e,this.sort.process()}applySort(){return this.sort.play().then(this.onUpdateCallback)}onUpdate(e){this.onUpdateCallback=e}}R=new WeakMap;class Re extends V{process(){for(let e=this.serie.numbers.length-1;e>=0;e--){for(let t=0;t<e;t++)if(this.saveStep("processing",{index:t}),this.serie.numbers[t].value>this.serie.numbers[t+1].value){let i=this.serie.numbers[t+1];this.serie.numbers[t+1]=this.serie.numbers[t],this.serie.numbers[t]=i,this.saveStep("swap",{indexA:t,indexB:t+1})}else this.saveStep("unsorted",{index:t});this.saveStep("sorted",{index:e})}this.validate()}}class Le extends V{constructor(){super(...arguments);y(this,"steps",[]);y(this,"currentStep",0)}process(){this.serie.numbers=[];for(let t=0;t<this.serie.length;t++){let i={value:Math.floor(fe(0,1e4)),state:"unsorted"};this.serie.numbers[t]=i}}}class Fe extends V{process(){let e=0;for(let t=0;t<this.serie.numbers.length-1;t++){e=t,this.serie.numbers[e].state="save",this.saveStep("save",{index:e});for(let s=t;s<this.serie.numbers.length;s++)s>t&&(this.serie.numbers[s].state="processing",this.saveStep("processing",{index:s})),this.serie.numbers[s].value<this.serie.numbers[e].value&&(this.serie.numbers[e].state="unsorted",this.saveStep("unsorted",{index:e}),e=s,this.serie.numbers[s].state="save",this.saveStep("save",{index:s})),this.serie.numbers[s].state==="processing"&&(this.serie.numbers[s].state="unsorted",this.saveStep("unsorted",{index:s}));let i=this.serie.numbers[t];this.serie.numbers[t]=this.serie.numbers[e],this.serie.numbers[e]=i,this.saveStep("swap",{indexA:t,indexB:e}),this.saveStep("sorted",{index:t})}this.saveStep("sorted",{index:this.serie.numbers.length-1}),this.validate()}}class Ie extends V{process(){this.quickSortInPlace(this.serie.numbers),console.log("ended"),this.validate()}quickSortInPlace(e,t=0,i=e.length-1){if(t>=i)return;const s=this.partition(e,t,i);this.quickSortInPlace(e,t,s-1),this.saveStep("sorted",{index:t}),this.quickSortInPlace(e,s+1,i),s+1<e.length&&this.saveStep("sorted",{index:s+1})}partition(e,t,i){const s=e[i];this.saveStep("temp",{index:i});let n=t;for(let p=t;p<i;p++)this.saveStep("processing",{index:p}),e[p].value<s.value&&(this.saveStep("swap",{indexA:n,indexB:p}),[e[n],e[p]]=[e[p],e[n]],n++),this.saveStep("unsorted",{index:p});return[e[n],e[i]]=[e[i],e[n]],this.saveStep("swap",{indexA:n,indexB:i}),this.saveStep("sorted",{index:n}),n}}class We extends V{process(){for(let e=1;e<this.serie.numbers.length;e++){let t=this.serie.numbers[e],i=e-1;for(this.saveStep("save",{index:e});i>=0&&this.serie.numbers[i].value>t.value;)this.saveStep("processing",{index:i}),this.saveStep("swap",{indexA:i,indexB:i+1}),this.serie.numbers[i+1]=this.serie.numbers[i],this.saveStep("unsorted",{index:i}),this.saveStep("unsorted",{index:i+1}),i--;this.serie.numbers[i+1]=t}this.validate()}}class Ne extends V{process(){let e=0,t=this.serie.numbers.length-1,i=!0;for(;i;){i=!1;for(let s=e;s<t;s++)if(this.saveStep("processing",{index:s}),this.serie.numbers[s].value>this.serie.numbers[s+1].value){let n=this.serie.numbers[s+1];this.serie.numbers[s+1]=this.serie.numbers[s],this.serie.numbers[s]=n,this.saveStep("swap",{indexA:s,indexB:s+1}),i=!0}else this.saveStep("unsorted",{index:s});if(this.saveStep("sorted",{index:t}),t--,!i)break;i=!1;for(let s=t;s>e;s--)if(this.saveStep("processing",{index:s}),this.serie.numbers[s-1].value>this.serie.numbers[s].value){let n=this.serie.numbers[s-1];this.serie.numbers[s-1]=this.serie.numbers[s],this.serie.numbers[s]=n,this.saveStep("swap",{indexA:s-1,indexB:s}
1),i=!0}else this.saveStep("unsorted",{index:s-1});this.saveStep("sorted",{index:e}),e++}this.validate()}}class Ue{constructor(e=10){y(this,"pool");y(this,"maxSize");this.maxSize=e,this.pool=[]}generateWeirdWave1(e,t=20){const i=new Float32Array(t),s=new Float32Array(t);for(let n=1;n<t;n++)i[n]=Math.random()*(n%2===0?-1:1),s[n]=Math.sin(n*Math.PI/3)/n;return e.createPeriodicWave(i,s)}generateWeirdWave2(e,t=30){const i=new Float32Array(t),s=new Float32Array(t);for(let n=1;n<t;n++)i[n]=0,s[n]=(Math.sin(n)+Math.sin(n*.5))/n;return e.createPeriodicWave(i,s)}generateMetallicWave(e,t=25){const i=new Float32Array(t),s=new Float32Array(t);for(let n=1;n<t;n++)i[n]=Math.cos(n*.2)/(n%3+1),s[n]=Math.sin(n*2)/(n%5+1);return e.createPeriodicWave(i,s)}playSound(e=0,t=.05){const i=this.getAvailableContext();if(!i)return;let s=i.createOscillator(),n=i.createGain(),p=i.createDynamicsCompressor();s.frequency.value=e,n.gain.value=.1;const d=new Float32Array(2),x=new Float32Array(2);d[0]=0,x[0]=0,d[1]=1,x[1]=0;const w=this.generateWeirdWave2(i,12);s.setPeriodicWave(w),s.connect(n).connect(p).connect(i.destination),n.gain.exponentialRampToValueAtTime(.05,i.currentTime+t),s.start(i.currentTime),s.stop(i.currentTime+t),s.onended=()=>{this.releaseContext(i)}}getAvailableContext(){for(const e of this.pool)if(e._available)return e._available=!1,e;if(this.pool.length<this.maxSize){const e=new(window.AudioContext||window.webkitAudioContext);return e._available=!1,this.pool.push(e),e}return console.warn("AudioContextPool: all contexts busy"),null}releaseContext(e){e._available=!0}}const Ze={class:"flex flex-col lg:flex-row gap-16"},ze={class:"flex flex-col flex-1 items-center gap-16"},Oe={class:"flex flex-col gap-4 items-center"},De={class:"flex items-end gap-4"},Ee={class:"flex gap-4"},He={class:"flex gap-1 h-64 overflow-x-auto w-full"},Ge={class:"flex flex-col justify-end items-center gap-4 h-full flex-1"},Qe=["data-number"],Xe={class:"flex flex-wrap items-center justify-between gap-8"},Je={class:"flex items-center gap-2"},Ke={class:"p-12 md:w-1/4 flex flex-col gap-3 shadow-xl shadow-[rgba(0,0,0,.25)] rounded-3xl bg-slate-800"},it={__name:"index",setup(l){const e=k([]),t=new ne,i=k(!1),s=k(10),n=k(!1),p=k(10),d=k({}),x=he([{value:"bubble",label:"Tri à bulle (bubble-sort)",sortComponent:Re},{value:"selection",label:"Tri par sélection (selection-sort)",sortComponent:Fe},{value:"quick",label:"Tri rapide (quick-sort)",sortComponent:Ie},{value:"insertion",label:"Tri par insertion (insertion-sort)",sortComponent:We},{value:"cocktail",label:"Tri cocktail (cocktail-sort)",sortComponent:Ne}]),w=r=>{t.setSort(new r.sortComponent)},W=r=>{N()};t.onUpdate(()=>{e.value=[...t.numbers]});const N=()=>{let r=d.value;t.length=p.value,t.setSort(new Le),t.applySort().then(()=>{r&&r.value?(console.log("current",r),d.value=r,t.setSort(new d.value.sortComponent)):d.value=""})},ae=()=>{i.value=!0,E()},D=()=>{let r=t.sort.next();return new Promise(a=>{if(r)return H(r).then(a);i.value=!1,a()})},re=()=>{let r=t.sort.prev();return new Promise(a=>{if(r)return H(r).then(a);i.value=!1,a()})},E=()=>{D().then(async()=>{await Y(1e3/s.value),i.value&&E()})},oe=()=>{i.value=!1},B=new Ue(10),h=k(),H=async r=>{if(r.type==="swap"){n.value||(B.playSound(_(e.value[r.step.indexA].value,t.min,t.max,200,800)),B.playSound(_(e.value[r.step.indexB].value,t.min,t.max,200,800)));let a=r.step.indexA,f=r.step.indexB;h.value[a].style.transitionProperty="",h.value[f].style.transitionProperty="transform";let m=h.value[a].getBoundingClientRect(),G=h.value[f].getBoundingClientRect().left-m.left;h.value[a].style.transform=`translateX(${G}px)`,h.value[f].style.transform=`translateX(${-G}px)`,Y(1e3/s.value).then(async()=>{h.value[a].style.transitionProperty="none",h.value[f].style.transitionProperty="none",h.value[a].style.transform="",h.value[f].style.transform="";let ue=e.value[a];e.value[a]=e.value[f],e.value[f]=ue})}else r.type==="sorted"?(console.log("sorted",r.type,r,e.value),e.value[r.step.index].state="sorted"):r.type==="processing"?(e.value[r.step.index].state="processing",n.value||B.playSound(_(e.value[r.step.index].value,t.min,t.max,200,800))):r.type==="unsorted"?e.value[r.step.index].state="unsorted":r.type==="save"?(n.value||B.playSound(_(e.value[r.step.index].value,t.min,t.max,200,800)),e.value[r.step.index].state="save"):r.type==="temp"&&(n.value||B.playSound(_(e.value[r.step.index].value,t.min,t.max,200,800)),e.value[r.step.index].state="temp")};return xe(()=>{N()}),(r,a)=>{const f=Be;return c(),v("div",Ze,[u("div",ze,[u("div",Oe,[u("div",De,[g(f,{modelValue:o(p),"onUpdate:modelValue":a[0]||(a[0]=m=>Z(p)?p.value=m:null),onChange:W,label:"Nombre d'éléments",class:"w-32","return-value":"value",options:[5,10,20,50,100,200]},null,8,["modelValue"]),g(T,{class:"p-2 rounded text-gray-900",color:"error",onClick:N},{default:P(()=>a[5]||(a[5]=[J("Mélanger")])),_:1})]),u("div",Ee,[g(T,{class:"p-2 rounded",onClick:a[1]||(a[1]=m=>o(i)?oe():ae())},{default:P(()=>[o(i)?M("",!0):(c(),I(o(ye),{key:0,style:{width:"20px",height:"20px"}})),o(i)?(c(),I(o(we),{key:1,style:{width:"20px",height:"20px"}})):M("",!0)]),_:1}),g(T,{class:"p-2 rounded",onClick:re},{default:P(()=>[g(o(be),{style:{width:"20px",height:"20px"}})]),_:1}),g(T,{class:"p-2 rounded",onClick:D},{default:P(()=>[g(o(ge),{style:{width:"20px",height:"20px"}})]),_:1}),g(T,{class:"p-2 rounded",onClick:a[2]||(a[2]=m=>n.value=!o(n))},{default:P(()=>[o(n)?M("",!0):(c(),I(o(Se),{key:0,style:{width:"20px",height:"20px"}})),o(n)?(c(),I(o(ke),{key:1,style:{width:"20px",height:"20px"}})):M("",!0)]),_:1}),g(_e,{label:`Vitesse: ${o(s)}`,modelValue:o(s),"onUpdate:modelValue":a[3]||(a[3]=m=>Z(s)?s.value=m:null),min:"1",max:"100",step:"1",class:"w-32"},null,8,["label","modelValue"])])]),u("div",He,[(c(!0),v(S,null,O(o(e),m=>(c(),v("div",Ge,[u("div",{ref_for:!0,ref_key:"animatedBars",ref:h,class:ie(`rounded-md w-full transition-transform duration-[${1e3/o(s)}ms]`),style:K({background:o($e)(m),height:`${o(je)(m,o(t).numbers)}%`}),"data-number":m.value},null,14,Qe)]))),256))]),u("div",Xe,[(c(!0),v(S,null,O(o(le),m=>
1(c(),v("div",Je,[u("div",{class:"h-4 w-4 rounded",style:K(`background-color: ${m.color};`)},null,4),J(" "+$(m.label),1)]))),256))])]),u("div",Ke,[g(f,{modelValue:o(d),"onUpdate:modelValue":a[4]||(a[4]=m=>Z(d)?d.value=m:null),label:"Sélectionner un tri",options:o(x),onChange:w},null,8,["modelValue","options"]),o(d).value==="selection"?(c(),v(S,{key:0},[a[6]||(a[6]=u("div",{class:"text-primary text-2xl font-bold mt-4"}," Tri par sélection (Selection Sort) ",-1)),a[7]||(a[7]=u("div",null,"ð Pour chaque position du tableau :",-1)),a[8]||(a[8]=u("div",null," ð Cherche le plus petit élément restant dans la partie non triée ",-1)),a[9]||(a[9]=u("div",null,"ð Ãchange ce minimum avec lâélément courant",-1)),a[10]||(a[10]=u("div",null,"ð§± La partie gauche devient triée, la droite reste à trier",-1)),a[11]||(a[11]=u("div",null,"â
Répète jusquâà ce que tout soit trié",-1)),a[12]||(a[12]=u("h3",{class:"text-xl font-bold mt-4"},"Avantages et inconvénients",-1)),a[13]||(a[13]=u("div",null,"ð Lent (O(n²)) â à éviter pour les gros tableaux",-1)),a[14]||(a[14]=u("div",null,"ð Simple et déterministe",-1))],64)):o(d).value==="bubble"?(c(),v(S,{key:1},[a[15]||(a[15]=F('<div class="text-primary text-2xl font-bold mt-4"> Tri à bulle (Bubble Sort) </div><div>ð Compare deux éléments voisins</div><div>ð Si le premier est plus grand, on les échange</div><div> ð Répète lâopération pour chaque paire, jusquâà la fin du tableau </div><div>â¬ï¸ Lâélément le plus grand "bulle" vers la fin</div><div> ð Recommence depuis le début, en ignorant la dernière position (déjà triée) </div><div>â
Continue jusquâà ce quâil nây ait plus dâéchange</div><h3 class="text-xl font-bold mt-4">Avantages et inconvénients</h3><div>ð Lent (O(n²)) â à éviter pour les gros tableaux</div><div>ð Simple à comprendre et à implémenter</div>',10))],64)):o(d).value==="quick"?(c(),v(S,{key:2},[a[16]||(a[16]=F('<div class="text-primary text-2xl font-bold mt-4"> Tri rapide (Quick Sort) </div><div> ð¯ Choisir un pivot (souvent le 1er, dernier, médian ou aléatoire) </div><div>âï¸ Réorganiser (partionner) le tableau :</div><ul><li class="ml-8">ð½ Tous les éléments < pivot vont à gauche</li><li class="ml-8">ð¼ Tous les éléments > pivot vont à droite</li></ul><div> ð Répéter récursivement sur chaque sous-tableau ð§ Compléxité : Moyenne - O(n log n) </div><h3 class="text-xl font-bold mt-4">Avantage et inconvénient</h3><div>ð Avantages</div><ul><li class="ml-8">Très rapide en pratique : O(n log n) en moyenne</li><li class="ml-8">Fonctionne en place (peu de mémoire utilisée)</li><li class="ml-8">Très efficace pour grands tableaux</li></ul><div>ð Inconvénients</div><ul><li class="ml-8">â ï¸ Pire cas : O(n²) (si pivot mal choisi)</li><li class="ml-8"> âï¸ Récursif â nécessite une bonne gestion de la pile </li></ul>',10))],64)):o(d).value==="insertion"?(c(),v(S,{key:3},[a[17]||(a[17]=F('<div class="text-primary text-2xl font-bold mt-4"> Tri par insertion (Insertion Sort) </div><div>ð Parcourt le tableau de gauche à droite</div><div> ð§ Pour chaque élément, cherche sa bonne place dans la partie déjà triée </div><div>ð Décale les éléments plus grands vers la droite</div><div>ð§· Insère lâélément à la bonne position</div><div>â
Répète jusquâà la fin du tableau</div><h3 class="text-xl font-bold mt-4">Avantage et inconvénient</h3><div>ð Avantages</div><ul><li> ð¥ Très efficace pour petits tableaux ou tableaux presque triés </li><li>â
Facile à implémenter</li><li>ð¦ En place (pas de copie de tableau)</li></ul><div>ð Inconvénients</div><ul><li>ð Performance : O(n²) en pire cas</li><li>â±ï¸ Lent sur grands tableaux désordonnés</li></ul>',11))],64)):o(d).value==="cocktail"?(c(),v(S,{key:4},[a[18]||(a[18]=F('<div class="text-primary text-2xl font-bold mt-4"> Tri Cockail Shaker (Cocktail Shaker Sort) </div><div> ð Tri à bulle amélioré avec un aller-retour à chaque itération </div><div> ð Va de gauche à droite pour pousser les plus grands à droite </
1div><div> ð Puis de droite à gauche pour pousser les plus petits à gauche </div><div>ð Rétrécit les bornes à chaque tour (start++, end--)</div><div>ð Arrête dès quâun aller-retour nâeffectue aucun échange</div><h3 class="text-xl font-bold mt-4">Avantage et inconvénient</h3><div>ð Avantages</div><ul><li> ð Plus efficace que le tri à bulle dans certains cas (surtout quand les plus petits sont coincés à gauche) </li><li>ð Meilleure répartition des comparaisons dans le tableau</li><li>ð¡ Facile à comprendre et à implémenter</li><li> ð Peut détecter un tableau déjà trié rapidement grâce au flag swapped </li></ul><div>ð Inconvénients</div><ul><li>ð Toujours O(n²) dans le pire des cas (comme le tri à bulle)</li><li>ð Moins intuitif à lire que le bubble sort si on le découvre</li><li> ð§ Pas utilisé en pratique pour de gros tableaux (remplacé par quick/merge/tim sort) </li></ul>',11))],64)):M("",!0)])])}}};export{it as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.