빠른 정렬은 "분할 및 정복"이라는 개념을 채택하여 하나의 정렬 패스에서 정렬할 데이터를 여러 개로 분할하는 비교적 효율적인 정렬 알고리즘입니다. 두 개의 독립적인 부분. 한 부분의 모든 데이터가 다른 부분보다 작도록 두 부분을 정렬한 다음 모든 데이터가 정렬될 때까지 두 부분을 계속해서 재귀적으로 정렬합니다.
public static void quickSort(int[] arry,int left,int right){ //运行判断,如果左边索引大于右边是不合法的,直接return结束此方法 if(left>right){ return; } //定义变量保存基准数(第一次进入方法最左边的数字下标为0) int base = arry[left]; //定义变量i,指向最左边 int i = left; //定义j ,指向最右边(第一次进入方法最右边数字下标为数组的长度减1) int j = right; //当i和j不相遇的时候,再循环中进行检索 while(i!=j){ //先由j从右往左检索比基准数小的,如果检索到比基准数小的就停下。 //如果检索到比基准数大的或者相等的就停下 while(arry[j]>=base && i<j){ j--; //j从右往左检索 } while(arry[i]<=base && i<j){ i++; //i从左往右检索 } //代码走到这里i停下,j也停下,然后交换i和j位置的元素 int tem = arry[i]; arry[i] = arry[j]; arry[j] = tem; } //如果上面while条件不成立就会跳出这个循环,往下执行 //如果这个条件不成立就说明 i和j相遇了 //如果i和j相遇了,就交换基准数这个元素和相遇位置的元素 //把相遇元素的值赋给基准数这个位置的元素 arry[left] = arry[i]; //把基准数赋给相遇位置的元素 arry[i] = base; //基准数在这里递归就为了左边的数比它小,右边的数比它大 //排序基准数的左边 quickSort(arry,left,i-1); //排右边 quickSort(arry,j+1,right); } public static void main(String[] args) { int[] arry = {11,81,71,61,10,42,33,24,99}; System.out.println("arry排序前:"+Arrays.toString(arry)); quickSort(arry,0, arry.length-1); System.out.println("arry排序后:"+Arrays.toString(arry)); }
버블 정렬 아이디어: 배열이 주어지면 배열을 오름차순(내림차순)으로 정렬합니다.
배열의 인접한 요소를 앞에서 뒤로 비교합니다. 이전 요소가 다음 요소보다 크면 한 번 통과한 후 가장 큰 요소가 배열의 끝에 있게 됩니다.
배열의 모든 요소가 배열될 때까지 위의 과정을 순서대로 따르세요.
위 내용은 JAVA에서 배열을 작은 것부터 큰 것까지 정렬하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!