快速排序和冒泡排序
快速排序
首先要找出一个比较的值,用这个值分别与左右的数值进行比较。
int i=0 ,j=9 int x =a[i]
如: 取第一个值,我们先与最右面的数比较,如过右面的比它大,就j--
然后 a[i++] = a[j];
在让值比较左面的值,如果左面的比它小,就i++
a[j--] = a[i];
如果 i == j 的时候,a[i] = x
然后重复前面的代码,也就是递归
代码:
1 public class QuickSort1 { 2 public void quicksort(int[] s, int start, int end) { 3 int x = s[start]; 4 int i = start; 5 int j = end; 6 if (start < end) { 7 while (i < j) { 8 while (i < j && s[j] >= x)//从右向左找第一个大于x的数 9 j--; 10 if (i < j) { 11 s[i++] = s[j]; 12 } 13 14 while (i < j && s[i] < x) {// 从左向右找第一个小于等于x的数 15 i++; 16 } 17 18 if (i < j) { 19 s[j--] = s[i]; 20 } 21 } 22 23 s[i] = x; 24 if (i - 1 > start) 25 quicksort(s, start, i - 1); 26 if (i + 1 < end) 27 quicksort(s, i + 1, end); 28 } 29 } 30 31 public static void main(String[] args) { 32 int[] a = { 100, 40, 60, 83, 34, 11, 56, 0 }; 33 new QuickSort1().quicksort(a, 0, a.length - 1); 34 for (int i = 0; i < a.length; i++) { 35 36 System.out.print(a[i]+","); 37 } 38 } 39 40 }
冒泡排序:
取出其中的一个数,分别与所有的数进行比较
1 public class Bubble { 2 public void sort(int[] s){ 3 int temp = 0; 4 for(int i=0; i< s.length; i++){ 5 for(int j = i ; j<=s.length-1;j++){ 6 if(s[i]>s[j]){ 7 temp = s[i]; 8 s[i] = s[j]; 9 s[j] = temp; 10 } 11 // for(int j = 0 ; j<s.length-i-1;j++){ 12 // if(s[j]>s[j+1]){ 13 // temp = s[j]; 14 // s[j] = s[j+1]; 15 // s[j+1] = temp; 16 // } 17 } 18 } 19 } 20 21 22 public static void main(String[] args){ 23 int[] a ={100,40,60,87,34,11,56,0}; 24 new Bubble().sort(a); 25 for (int i = 0; i < a.length; i++) { 26 27 System.out.print(a[i]+","); 28 } 29 } 30 }

浙公网安备 33010602011771号