快速排序用js、java和C的写法

来源:互联网 发布:linux怎么修改配置文件 编辑:程序博客网 时间:2024/05/18 13:05

快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。

然而在写法上不同的语言有稍稍的不同,在此写了三种语言上的快排(C是载自网络):

1.C

int quicksort(vector<int> &v, int left, int right){        if(left < right){                int key = v[left];                int low = left;                int high = right;                while(low < high){                        while(low < high && v[high] > key){                                high--;                        }                        v[low] = v[high];                        while(low < high && v[low] < key){                                low++;                        }                        v[high] = v[low];                }                v[low] = key;                quicksort(v,left,low-1);                quicksort(v,low+1,right);        }}

2.java

public static void quickSort(int[]a,int s,int t) {int i,j,temp;i=s;j=t;if(i<j) {temp = a[i];while(i!=j) {while(j>i&&a[j]>temp) j--;if(i<j){a[i]=a[j];i++;}while(j>i&&a[i]<temp) i++;if(i<j){a[j]=a[i];j--;}}a[i] = temp;quickSort(a,s,i-1);quickSort(a,i+1,t);}}

3.javascript

function quickSort(arr) {  if(arr.length<=1) {  return arr;  }  var s = Math.floor(arr.length/2);  var temp = arr.splice(s,1);    var left=[];  var right=[];  for(var i=0;i<arr.length;i++) {    if(arr[i]<temp) {      left.push(arr[i]);    }    if(arr[i]>=temp) {      right.push(arr[i]);    }  }    return quickSort(left).concat(temp,quickSort(right));    }


0 0
原创粉丝点击