说一下坑:必须要每一句话都要进行start<end判断,不然就会数值越界异常,可以把所有的start<end都去掉容易理解,后面再加上去.
public class MainActivity extends AppCompatActivity { int[] arr = new int[]{9, 5, 4, 8, 7, 3, 1}; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); int[] array = quickly(arr, 0, arr.length - 1); System.out.println(Arrays.toString(array)); } public int[] quickly(int[] array, int start, int end) { if (start<end) { int midIndex = getMidIndex(array, start, end); quickly(array, 0, midIndex - 1); quickly(array, midIndex + 1, end); } return array; } public int getMidIndex(int[] array, int start, int end) { int basic = array[start]; if (start < end) { while (array[end] >= basic && start<end) { end--; } if (start < end) { array[start] = array[end]; start++; } while (array[start] < basic && start<end) { start++; } if (start < end) { array[end] = array[start]; end--; } } array[start] = basic; return start; } }
原文:https://www.cnblogs.com/Ocean123123/p/11032374.html