<html>
<head><title>二元搜尋</title></head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body></body>
</html>
var datas=[3,93,86,81,73,69,45,39,27,18];
$().ready(function(){
console.clear();
quick_sort(datas,0,datas.length -1); //快速排序
console.log(datas);
var n=parseInt(window.prompt("輸入要搜尋的值"));
var left=0,right=datas.length-1,found=false;
var middle=0,i=0;
console.log("找"+n);
while(left<=right && found===false){
i++;
middle=Math.floor((left+right)/2);
console.log("第"+i+"回合:中「"+middle+"」,值:"+datas[middle]+",左:"+left+",右:"+right);
if(datas[middle]==n){
found=true;
console.log("Index:"+middle+",是要找的數字"+n);
}else{
if(datas[middle]>n){
right=middle-1;
}else{
left=middle+1;
}
}
}
if(left>right)console.log("找不到"+n);
});
function swap(A,i,j){
var tmp = A[i];
A[i] = A[j];
A[j] = tmp;
}
function quick_sort(A,p,r){
if(p < r)
{
var q = partition(A,p,r);
quick_sort(A, p, q-1);
quick_sort(A, q+1, r);
}
}
function partition(A,p,r){
var x = A[r];
var i = p-1 ;
for(var j = p; j <= r-1; j++)
{
if(A[j] <= x)
{
i++;
swap(A,i,j);
}
}
swap(A,i+1,r);
return i+1;
}
Output
300px
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |