JavaScriptは各種の並べ替えアルゴリズムを実現します.

13651 ワード

記事の目次
  • 発泡体並べ替え
  • 並べ替えを挿入する
  • 順序選択
  • 快速並べ替え
  • 正規並べ替え
  • 泡の並べ替え
    function bubbleSort(arr) {
    	for (var i = 0;i < arr.length;i++) {
    		//     ,           ,    i+1 ,  i+1       
    		for (var j = 0;j < arr.length-i-1;j++) {
    			//         
    			if(arr[j] > arr[j+1]) {
    				//   :      ,        
    				[arr[j], arr[j+1]] = [arr[j+1], arr[j]];
    			}
    		}
    	}
    	return arr;
    }
    
    並べ替えの挿入
    function insertSort(arr) {
    	for (var i = 1; i < arr.length; i++) {
    		//  arr[i]             
    		var temp = arr[i];
    		for (var j = i - 1; j >= 0; j--) {
    			//  arr[i]    i      
    			if (temp < arr[j]) {//temp ,       
    				arr[j + 1] = arr[j];
    			} else {
    				arr[j + 1] = temp;
    				break;
    			}
    		}
    		arr[j + 1] = temp;
    	}
    	return arr;
    }
    
    並べ替えを選択
    function chooseSort(arr) {
    	for (var i = 0;i < arr.length; i++){
    		var min=9999;
    		var min_index=-1;
    		//              
    		for(var j = i; j < arr.length;j++){
    			if(arr[j]<min){
    				min=arr[j];
    				min_index=j;
    			}
    		}
    		[arr[i],arr[min_index]] = [arr[min_index],arr[i]];
    	}
    	return arr;
    }
    
    クイックソート
    function Partition (arr,low,high){
    	var pk=arr[low];
    	while(low <high) {
    		while(arr[high]>=pk && high>low){
    			high--;
    		}
    		arr[low]=arr[high];
    		while(arr[low]<=pk && high>low){
    			low++;
    		}
    		arr[high]=arr[low];
    	}
    	arr[low]=pk;
    	return low;
    }
    function quickSort(arr,low,high) {		
    	if(low<high){
    		var pk=Partition(arr,low,high);
    		quickSort(arr,low,pk-1);
    		quickSort(arr,pk+1,high);	
    	} 
    }
    
    並べ替え