voidquick_sort(vector<int> &nums, int left, int right){ if (left >= right){ return; } int pivot = nums[left+(right-left)/2]; int i = left - 1; int j = right + 1; while(i < j){ do i++; while(nums[i] < pivot); do j--; while(nums[j] > pivot); if (i < j){ swap(nums[i], nums[j]); } } quick_sort(nums, left, j); quick_sort(nums, j+1, right); }
快速排序(python)
1 2 3 4 5 6 7 8
defquick_sort(nums,left,right): if left>=right: return pivot = nums[left+(right-left)//2] nums_left = [x for x in nums if x < pivot] nums_mid = [x for x in nums if x == pivot] nums_right = [x for x in nums if x > pivot] return quick_sort(nums_left,0,len(nums_left)-1) + nums_mid + quick_sort(nums_right,0,len(nums_right)-1)
defdfs(matrix, i, j): rows = len(matrix) columns = len(matrix[0]) index = [[-1,0], [1,0], [0,-1], [0,1]] matrix[i][j] = 0 for inx in index: x = i + inx[0] y = j + inx[1] if x inrange(rows) and y inrange(columns) and matrix[x][y] == 1: dfs(matrix, x, y)
voiddfs(vector<vector<int>> &matrix, int x, int y){ matrix[x][y] = 0; int rows = matrix.size(); int columns = matrix[0].size(); if ( x - 1 >= 0and matrix[x-1][y] == 1){ dfs(matrix, x-1, y); } if ( x + 1 < rows and matrix[x+1][y] == 1){ dfs(matrix, x+1, y); } if ( y - 1 >= 0and matrix[x][y-1] == 1){ dfs(matrix, x, y-1); } if ( y + 1 < columns and matrix[x][y+1] == 1){ dfs(matrix, x, y+1); } }
intmain(){ int rows = matrix.size(); int columns = matrix[0].size(); int ans = 0; if (rows == 0){ ans = 0; } for(int x = 0; x < rows; x++){ for(int y = 0; y < columns; y++){ if (matrix[x][y] == 1){ dfs(matrix, x, y); ans++; } } } cout << ans << endl; }