快速排序用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
- 快速排序用js、java和C的写法
- 关于冒泡排序的C和JAVA的写法
- C和OC冒泡排序的写法
- 快速排序的一种写法
- 快速排序的一种写法
- 快速排序的简单写法
- 快速排序的简洁写法
- 快速排序的递归写法
- 快速排序partition的写法
- java的冒泡排序和快速排序
- Java的冒泡排序和快速排序.
- 快速排序 Java/C
- java快速排序和三向切分的快速排序
- 快速排序的非递归写法
- 快速排序的第二种写法
- 快速排序php写法
- 快速排序的Java和Scala实现
- js和java写法中this标签的误区
- TabHost Tab的添加和删除
- MySQL修改密码方法总结
- Spinner的使用
- Vim报错E558: 在 terminfo 中找不到终端项 'gnome-256color'
- poj1141 Brackets Sequence 区间dp
- 快速排序用js、java和C的写法
- DatePikerDialog 和DatePicker(日期控件)
- hduoj1395!【水题】
- hdu2000 ASCII码排序
- wubi安装ubuntu14.04
- LuaSocket在Windows LDT环境中的使用
- Closeable 是可以关闭的数据源或目标。
- OpenWrt挂载u盘
- unity 改变鼠标样式的两种方法