Java实现快速排序

来源:互联网 发布:冷兵器 知乎 编辑:程序博客网 时间:2024/04/29 13:18

今天特地把快速算法用Java实现了一下,毕竟找工作面试笔试用的比较多。

package String.Cheng;import java.util.Scanner;public class QuickSort {public static void Swap(int []s,int l,int r){int temp;if (s[l]<s[r]&&s[r]<s[(l+r)/2]) {temp = s[r];s[r] = s[l];s[l] = temp;}else if (s[l]>s[r]&&s[r]>s[(l+r)/2]) {temp = s[r];s[r] = s[l];s[l] = temp;}if (s[l]<s[(l+r)/2]&&s[r]>s[(l+r)/2]) {temp = s[(l+r)/2];s[(l+r)/2] = s[l];s[l] = temp;}else if (s[l]<s[(l+r)/2]&&s[r]>s[(l+r)/2]) {temp = s[(l+r)/2];s[(l+r)/2] = s[l];s[l] = temp;}}public static void QuickSort(int s[], int l, int r)  {      if (l < r)      {          Swap(s,l,r); //取数组的开始、中间、结束位置三个数的中间数作为枢纽元          int i = l, j = r, x = s[l];          while (i < j)          {              while(i < j && s[j] >= x) // 从右向左找第一个小于x的数                  j--;                if(i < j)                   s[i++] = s[j];                            while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数                  i++;                if(i < j)                   s[j--] = s[i];          }          s[i] = x;          QuickSort(s, l, i - 1); // 递归调用           QuickSort(s, i + 1, r);      }  }  public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("请输入数组,以空格隔开!");Scanner sc = new Scanner(System.in);String b[] = sc.nextLine().split(" ");int a[] = new int[b.length];for (int i = 0; i < b.length; i++) {a[i] = Integer.parseInt(b[i]);}QuickSort(a,0,a.length-1);for (int i = 0; i < a.length; i++) {System.out.print(a[i]+",");}}}


0 0
原创粉丝点击