1 line
13 KiB
JavaScript
1 line
13 KiB
JavaScript
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{5515:function(e,t,a){Promise.resolve().then(a.bind(a,9031))},9031:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return T}});var r=a(7437),s=a(2265),i=a(1538),n=a(2218),o=a(4839),l=a(6164);function d(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,l.m6)((0,o.W)(t))}let c=(0,n.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),m=s.forwardRef((e,t)=>{let{className:a,variant:s,size:n,asChild:o=!1,...l}=e,m=o?i.g7:"button";return(0,r.jsx)(m,{className:d(c({variant:s,size:n,className:a})),ref:t,...l})});m.displayName="Button";var u=a(1199),f=a(7592),p=a(2468),h=a(8165);let x=u.fC,g=u.xz;u.ZA,u.Uv,u.Tr;let b=u.Ee;s.forwardRef((e,t)=>{let{className:a,inset:s,children:i,...n}=e;return(0,r.jsxs)(u.fF,{ref:t,className:d("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",s&&"pl-8",a),...n,children:[i,(0,r.jsx)(f.Z,{className:"ml-auto h-4 w-4"})]})}).displayName=u.fF.displayName,s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(u.tu,{ref:t,className:d("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...s})}).displayName=u.tu.displayName;let w=s.forwardRef((e,t)=>{let{className:a,sideOffset:s=4,...i}=e;return(0,r.jsx)(u.Uv,{children:(0,r.jsx)(u.VY,{ref:t,sideOffset:s,className:d("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...i})})});w.displayName=u.VY.displayName,s.forwardRef((e,t)=>{let{className:a,inset:s,...i}=e;return(0,r.jsx)(u.ck,{ref:t,className:d("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s&&"pl-8",a),...i})}).displayName=u.ck.displayName,s.forwardRef((e,t)=>{let{className:a,children:s,checked:i,...n}=e;return(0,r.jsxs)(u.oC,{ref:t,className:d("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),checked:i,...n,children:[(0,r.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,r.jsx)(u.wU,{children:(0,r.jsx)(p.Z,{className:"h-4 w-4"})})}),s]})}).displayName=u.oC.displayName;let y=s.forwardRef((e,t)=>{let{className:a,children:s,...i}=e;return(0,r.jsxs)(u.Rk,{ref:t,className:d("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...i,children:[(0,r.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,r.jsx)(u.wU,{children:(0,r.jsx)(h.Z,{className:"h-2 w-2 fill-current"})})}),s]})});y.displayName=u.Rk.displayName,s.forwardRef((e,t)=>{let{className:a,inset:s,...i}=e;return(0,r.jsx)(u.__,{ref:t,className:d("px-2 py-1.5 text-sm font-semibold",s&&"pl-8",a),...i})}).displayName=u.__.displayName,s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(u.Z0,{ref:t,className:d("-mx-1 my-1 h-px bg-muted",a),...s})}).displayName=u.Z0.displayName;var v=a(28);let j=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsxs)(v.fC,{ref:t,className:d("relative flex w-full touch-none select-none items-center",a),...s,children:[(0,r.jsx)(v.fQ,{className:"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary",children:(0,r.jsx)(v.e6,{className:"absolute h-full bg-primary"})}),(0,r.jsx)(v.bU,{className:"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"})]})});j.displayName=v.fC.displayName;let N=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,className:d("rounded-lg border bg-card text-card-foreground shadow-sm",a),...s})});N.displayName="Card";let C=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,className:d("flex flex-col space-y-1.5 p-6",a),...s})});C.displayName="CardHeader";let k=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("h3",{ref:t,className:d("text-2xl font-semibold leading-none tracking-tight",a),...s})});k.displayName="CardTitle";let S=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("p",{ref:t,className:d("text-sm text-muted-foreground",a),...s})});S.displayName="CardDescription";let R=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,className:d("p-6 pt-0",a),...s})});function T(){let[e,t]=(0,s.useState)([]),[a,i]=(0,s.useState)(!1),[n,o]=(0,s.useState)("bubble"),[l,d]=(0,s.useState)(20),c=(0,s.useRef)(!1),u=(0,s.useRef)(!1);(0,s.useEffect)(()=>{f(l)},[l]);let f=e=>{t(Array.from({length:e},()=>Math.floor(100*Math.random())))},p=async()=>(c.current&&await new Promise(e=>{let t=()=>{c.current&&!u.current?setTimeout(t,100):e(null)};t()}),u.current),h=async()=>{let a=[...e];for(let e=0;e<a.length;e++)for(let r=0;r<a.length-e-1;r++){if(await p())return;a[r]>a[r+1]&&([a[r],a[r+1]]=[a[r+1],a[r]],t([...a]),await new Promise(e=>setTimeout(e,100)))}u.current||i(!1)},v=async()=>{let a=[...e];for(let e=1;e<a.length;e++){if(await p())return;let r=a[e],s=e-1;for(;s>=0&&a[s]>r;){if(await p())return;a[s+1]=a[s],s-=1,t([...a]),await new Promise(e=>setTimeout(e,100))}a[s+1]=r,t([...a]),await new Promise(e=>setTimeout(e,100))}u.current||i(!1)};async function T(e,a,r){if(await p())return;let s=r,i=2*r+1,n=2*r+2;i<a&&e[i]>e[s]&&(s=i),n<a&&e[n]>e[s]&&(s=n),s!==r&&([e[r],e[s]]=[e[s],e[r]],t([...e]),await new Promise(e=>setTimeout(e,100)),await T(e,a,s))}let O=async()=>{let a=[...e],r=a.length;for(let e=Math.floor(r/2)-1;e>=0;e--){if(await p())return;await T(a,r,e)}for(let e=r-1;e>0;e--){if(await p())return;[a[0],a[e]]=[a[e],a[0]],t([...a]),await new Promise(e=>setTimeout(e,100)),await T(a,e,0)}u.current||i(!1)};async function P(e,a,r){if(await p())return a;let s=e[r],i=a-1;for(let n=a;n<r;n++){if(await p())return i+1;e[n]<s&&(i++,[e[i],e[n]]=[e[n],e[i]],t([...e]),await new Promise(e=>setTimeout(e,100)))}return[e[i+1],e[r]]=[e[r],e[i+1]],t([...e]),await new Promise(e=>setTimeout(e,100)),i+1}let z=async(e,t,a)=>{if(t<a){if(await p())return;let r=await P(e,t,a);await z(e,t,r-1),await z(e,r+1,a)}},_=async(e,t,a)=>{if(!await p()&&t<a){let r=Math.floor((t+a)/2);await _(e,t,r),await _(e,r+1,a),await M(e,t,r,a)}},M=async(e,a,r,s)=>{if(await p())return;let i=r-a+1,n=s-r,o=Array(i),l=Array(n);for(let t=0;t<i;t++)o[t]=e[a+t];for(let t=0;t<n;t++)l[t]=e[r+1+t];let d=0,c=0,m=a;for(;d<i&&c<n;){if(await p())return;o[d]<=l[c]?(e[m]=o[d],d++):(e[m]=l[c],c++),t([...e]),await new Promise(e=>setTimeout(e,100)),m++}for(;d<i;){if(await p())return;e[m]=o[d],d++,m++,t([...e]),await new Promise(e=>setTimeout(e,100))}for(;c<n;){if(await p())return;e[m]=l[c],c++,m++,t([...e]),await new Promise(e=>setTimeout(e,100))}},{title:q,timeComplexity:A,spaceComplexity:I,description:U}=(()=>{switch(n){case"bubble":return{title:"Bubble Sort",timeComplexity:"Time: O(n^2)",spaceComplexity:"Space: O(1)",description:"Bubble sort is a simple sorting algorithm that repeatedly steps through the list, compares adjacent elements and swaps them if they are in the wrong order. The pass through the list is repeated until the list is sorted."};case"insertion":return{title:"Insertion Sort",timeComplexity:"Time: O(n^2)",spaceComplexity:"Space: O(1)",description:"Insertion sort is a simple sorting algorithm that builds the final sorted array one item at a time. It is much less efficient on large lists than more advanced algorithms such as quicksort, heapsort, or merge sort."};case"merge":return{title:"Merge Sort",timeComplexity:"Time: O(n log n)",spaceComplexity:"Space: O(n)",description:"Merge sort is an efficient, stable, comparison-based, divide and conquer sorting algorithm. Most implementations produce a stable sort, meaning that the implementation preserves the input order of equal elements in the sorted output."};case"heap":return{title:"Heap Sort",timeComplexity:"Time: O(n log n)",spaceComplexity:"Space: O(1)",description:"Heap sort is a comparison-based sorting technique based on Binary Heap data structure. It is similar to selection sort where we first find the maximum element and place the maximum element at the end. We repeat the same process for the remaining element."};case"quick":return{title:"Quick Sort",timeComplexity:"Time: O(n log n)",spaceComplexity:"Space: O(log n)",description:"Quick sort is an efficient sorting algorithm that, on average, makes O(n log n) comparisons to sort n items. It is an in-place sort (i.e., it doesn't require any extra storage)."};default:return{title:"",timeComplexity:"",spaceComplexity:"",description:""}}})();return(0,r.jsxs)("div",{className:"flex flex-col items-center h-screen",children:[(0,r.jsx)("header",{className:"bg-primary text-primary-foreground py-4 px-6 w-full",children:(0,r.jsx)("h1",{className:"text-4xl font-bold text-center",children:"Algorithm Visualizer"})}),(0,r.jsxs)("h1",{className:"text-3xl font-bold mt-8 capitalize",children:[n," sort"]}),(0,r.jsx)("div",{className:"flex items-end justify-center h-64 mt-10 shadow-2xl p-4",children:e.map((e,t)=>(0,r.jsx)("div",{className:"mx-0.5 ".concat(a?"bg-red-500":"bg-blue-500"),style:{height:"".concat(2*e,"px"),width:"20px"}},t))}),(0,r.jsxs)("div",{className:"flex mt-10 space-x-4",children:[(0,r.jsx)(m,{onClick:()=>{switch(i(!0),c.current=!1,u.current=!1,n){case"bubble":h();break;case"insertion":v();break;case"merge":_([...e],0,e.length-1);break;case"heap":O();break;case"quick":z([...e],0,e.length-1)}},children:"Start"}),(0,r.jsx)(m,{onClick:()=>{c.current=!0},variant:"outline",children:"Pause"}),(0,r.jsx)(m,{onClick:()=>{c.current=!1},variant:"outline",children:"Resume"}),(0,r.jsx)(m,{onClick:()=>{i(!1),c.current=!1,u.current=!0,f(l)},children:"Reset"}),(0,r.jsx)(m,{onClick:()=>{t([...e].sort(()=>Math.random()-.5))},children:"Shuffle"}),(0,r.jsxs)(x,{children:[(0,r.jsx)(g,{asChild:!0,children:(0,r.jsxs)(m,{children:[n.charAt(0).toUpperCase()+n.slice(1)," Sort"]})}),(0,r.jsx)(w,{children:(0,r.jsxs)(b,{value:n,onValueChange:o,children:[(0,r.jsx)(y,{value:"bubble",children:"Bubble Sort"}),(0,r.jsx)(y,{value:"insertion",children:"Insertion Sort"}),(0,r.jsx)(y,{value:"merge",children:"Merge Sort"}),(0,r.jsx)(y,{value:"heap",children:"Heap Sort"}),(0,r.jsx)(y,{value:"quick",children:"Quick Sort"})]})})]})]}),(0,r.jsxs)("div",{className:"flex flex-col items-center mt-10 space-y-4",children:[(0,r.jsxs)("label",{className:"text-xl",children:["Array Size: ",l]}),(0,r.jsx)(j,{value:[l],onValueChange:e=>d(e[0]),min:5,max:100})]}),(0,r.jsx)("div",{className:"mt-16 w-full max-w-xl",children:(0,r.jsxs)(N,{className:"shadow-2xl",children:[(0,r.jsxs)(C,{children:[(0,r.jsx)(k,{className:"underline mb-2",children:q}),(0,r.jsxs)(S,{children:[(0,r.jsx)("div",{children:A}),(0,r.jsx)("div",{children:I})]})]}),(0,r.jsx)(R,{children:(0,r.jsx)("p",{className:"text-justify",children:U})})]})})]})}R.displayName="CardContent",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,className:d("flex items-center p-6 pt-0",a),...s})}).displayName="CardFooter"}},function(e){e.O(0,[726,971,23,744],function(){return e(e.s=5515)}),_N_E=e.O()}]); |