クイックソートアルゴリズムの実装(javascript言語)

<script>
//快速排序
//author:Hengda
//arr数组
//start 排序段落起始下标(含)
//end	排序段落终止下标(含)	
//mode	false 升序 ture 降序
//start end 待排序元素段的起止位置
function quickSort( arr, start, end, mode ){
    
    

    var j,temp;
    var i = start;

	if( end - start > arr.length ) return arr;

    if( start < end ){
    
    
        divIndex = end;
        divValue = arr[ divIndex ];
        for( j = start; j <= end ; j++ ){
    
    
            if( ( !mode && arr[j] <= divValue ) || ( mode && arr[j] >= divValue ) ){
    
    
                temp = arr[ i ];
                arr[ i ] = arr[ j ];
                arr[ j ] = temp;
                i++;
            }
        }
        i--;
        quickSort( arr, start, i-1 );
        quickSort( arr, i, end );
    }
    return arr;
}


function makeData( n ){
    
    
	var arr = [];
	var i = n;
	while( i-- ){
    
    
		arr.push( Math.floor( Math.random() * n ) );
	}
	return arr;
}


arr = makeData( 1000000 );
arrString = JSON.stringify( arr );

arr1 = JSON.parse( arrString );
console.log( arr1 );
console.time( "快速排序" );
arr1 = quickSort( arr1, 0, arr1.length - 1, false );
console.timeEnd( "快速排序" );
console.log( arr1 );

arr2 = JSON.parse( arrString );
console.log( arr2 );
console.time( "快速排序" );
arr2 = quickSort( arr2, 0, arr2.length - 1, true );
console.timeEnd( "快速排序" );
console.log( arr2 );

</script>

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/one312/article/details/113066347