以下是一些经典的排序算法题目及其解题程序。
冒泡排序
题目描述:给定一个整数数组,按照从小到大的顺序进行排序。
解题程序:
void bubbleSort(vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (nums[j] > nums[j + 1]) {
swap(nums[j], nums[j + 1]);
}
}
}
}
选择排序
题目描述:给定一个整数数组,按照从小到大的顺序进行排序。
解题程序:
void selectionSort(vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
swap(nums[i], nums[minIndex]);
}
}
插入排序
题目描述:给定一个整数数组,按照从小到大的顺序进行排序。
解题程序:
void insertionSort(vector<int>& nums) {
int n = nums.size();
for (int i = 1; i < n; i++) {
int j = i - 1;
int temp = nums[i];
while (j >= 0 && nums[j] > temp) {
nums[j + 1] = nums[j];
j--;
}
nums[j + 1] = temp;
}
}
快速排序
题目描述:给定一个整数数组,按照从小到大的顺序进行排序。
解题程序:
void quickSort(vector<int>& nums, int left, int right) {
if (left >= right) {
return;
}
int i = left, j = right;
int pivot = nums[left + (right - left) / 2];
while (i <= j) {
while (nums[i] < pivot) {
i++;
}
while (nums[j] > pivot) {
j--;
}
if (i <= j) {
swap(nums[i], nums[j]);
i++;
j--;
}
}
quickSort(nums, left, j);
quickSort(nums, i, right);
}
以上是一些常见的排序算法题目及其解题程序。