排序
1.选择排序
时间复杂度O(n^2),空间复杂度O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| int[] x = {15, 7, 12, 2, 8}; for (int z = 0; z < x.length - 1; z++) { int index = z; for (int i = z + 1; i < x.length; i++) { if (x[i] < x[index]) { index = i; } } if (index != z) { int temp = x[z]; x[z] = x[index]; x[index] = temp; } for (int a : x) { System.out.print(a + "\t"); } System.out.println(); }
|
2.冒泡排序
时间复杂度O(n^2),空间复杂度O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| int[] x={15,13,9,4,3,2}; for (int i = 1; i < x.length; i++) { for (int j = 0; j < x.length-1-i; j++) { if(x[j]>x[j+1]){ int temp=x[j]; x[j]=x[j+1]; x[j+1]=temp; } } for (int a:x ) { System.out.println(a+"\t"); } }
|
5.插入排序
时间复杂度**O(n^2)**,空间复杂度O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Solution { public int[] sortArray(int[] nums) { int len = nums.length; for (int i = 1; i < len; i++) { int temp = nums[i]; int j = i; while (j > 0 && temp < nums[j - 1]) { nums[j] = nums[j - 1]; j--; } nums[j] = temp; } return nums; } }
|
4.快速排序
时间复杂度O(nlogn),空间复杂度O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| class Solution { public int[] sortArray(int[] nums) { quickSort(nums, 0, nums.length - 1); return nums; }
void quickSort(int[] nums, int i, int j) { int start = i; int end = j; if (start > end) { return; } int index = nums[i];
while (start != end) {
while (true) { if (start >= end || nums[end] < index) { break; } end--; }
while (true) { if (start >= end || nums[start] > index) { break; } start++; }
int temp = nums[start]; nums[start] = nums[end]; nums[end] = temp; }
int temp = nums[i]; nums[i] = nums[start]; nums[start] = temp;
quickSort(nums, i, start - 1); quickSort(nums, start + 1, j); } }
|