3.排序--快速排序
来源:互联网 发布:西安交大acca知乎 编辑:程序博客网 时间:2024/05/16 19:31
C语言版本:
/*快速排序 2012.2.25*/#include <stdio.h>int partion(int a[],int low,int high) //返回枢轴位置{ int i=low; int j=high; int pivot=a[low]; while(i<j) { while(i<j&&a[j]>=pivot) { --j; } a[i]=a[j]; while(i<j&&a[i]<=pivot) { ++i; } a[j]=a[i]; }a[i]=pivot; return i;}void quickSort(int a[],int low,int high) //快速排序{ if(low<high) { int pivotpos=partion(a,low,high); quickSort(a,low,pivotpos-1); quickSort(a,pivotpos+1,high); }}int main(int argc, char *argv[]){ int n; while(scanf("%d",&n)!=EOF) { int i; int *a=new int[n]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } quickSort(a,0,n-1); for(i=0;i<n;i++) { printf("%d ",a[i]); } printf("\n"); } return 0;}
Java 版本:
package algorithm.sort;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Collections;import java.util.Deque;import java.util.LinkedList;import time.Timing;public class QuickSort{public <T extends Comparable<T>> void quickSort1(ArrayList<T> arr,int l,int u){if (l>=u) {return;}int m=l;for (int i = l+1; i <= u; i++) {if (arr.get(i).compareTo(arr.get(l))<0) {Collections.swap(arr, ++m, i);}}Collections.swap(arr, l, m);quickSort1(arr, l, m-1);quickSort1(arr, m+1, u);}public <T extends Comparable<T>> void quickSort2(ArrayList<T> arr,int l,int u){if (l>=u) {return;}T temp=arr.get(l); int i=l; int j=u;while(i<j){for (; i < j && arr.get(j).compareTo(temp)>=0; j--);for (; i < j && arr.get(i).compareTo(temp)<=0; i++);if (i>j) {break;}Collections.swap(arr, i, j);}Collections.swap(arr, j, l);quickSort2(arr, l, j-1);quickSort2(arr, j+1, u);}public static void main(String[] args) {// TODO Auto-generated method stubArrayList<Integer> arr=new ArrayList<Integer>();QuickSort qs=new QuickSort();try {FileOutputStream fos = new FileOutputStream("D:\\workspace\\DataStructures\\src\\algorithm\\sort\\rank_data.txt");OutputStreamWriter w = new OutputStreamWriter(fos, "UTF-8");InputStreamReader fr = new InputStreamReader(new FileInputStream("D:\\workspace\\DataStructures\\src\\algorithm\\sort\\random_data.txt"));BufferedReader br = new BufferedReader(fr);String line = null;while ((line = br.readLine()) != null) {arr.add(Integer.parseInt(line));}Timing sorTimer = new Timing();double timeInSec;sorTimer.start();qs.quickSort2(arr, 0, arr.size() - 1);timeInSec = sorTimer.stop();for (int i : arr) {w.write(i + "\n");}System.out.println(timeInSec);br.close();fr.close();w.close();fos.close();} catch (IOException e) {// TODO: handle exception}}}
- 3.排序--快速排序
- 排序之快速排序
- 排序算法--快速排序
- 插入排序,快速排序
- 快速排序 冒泡排序
- 排序算法--快速排序
- 排序之 快速排序
- 排序之快速排序
- 快速排序、冒泡排序
- 排序---快速排序
- 排序4快速排序
- 【排序】快速排序
- 排序算法---快速排序
- 快速排序,选择排序
- 排序算法-快速排序
- 【排序】快速排序
- 【基础排序】快速排序
- 排序之------快速排序
- Fusion实例2:如何通过竞技场使用RPC(远程过程调用)? .
- WordPress插件机制实现原理
- Xcode4.4 添加Framework方法
- (二)c++builder基础知识之在c++builder中由一个form上的按钮打开到另一个form界面
- 爱是永久相思情
- 3.排序--快速排序
- BufferedReader与InputStream的心得
- HDU 4122--Alice's mooncake shop(单调队列)
- CSS webkit
- fortran如何获取命令行中输入的参数
- C#验证类 可验证:邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP
- 初学Android,数据存储之使用SQLite数据库(四十六)
- ShellBasedUnixGroupsMapping: got exception trying to get groups for user webuser
- 观察者模式