Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找
时间: 2023-11-25 17:08:10 浏览: 41
Java常用的排序算法有冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序。
程序员必须掌握的8大排序算法包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序和计数排序。
其中,冒泡排序和选择排序都是比较简单的排序算法,但是时间复杂度较高;插入排序和希尔排序相对而言速度更快,但是对数据的要求比较高;归并排序、快速排序和堆排序则是效率比较高的排序算法,但是实现较为复杂。
二分法查找也是一种常用的查找算法,它是一种基于比较的查找方法,可以在有序数组中快速定位目标元素。二分法查找的时间复杂度为O(logN),是一种比较高效的查找算法。
相关问题
二分法查找算法的实现和交换排序的实现,c++
二分法查找算法的实现:
```c++
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
交换排序的实现:
```c++
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
```
以上是两个简单的算法实现,需要注意的是,在实际应用中,这些算法可能需要进行优化才能满足实际需求。
c++编程实现顺序查找算法及二分法查找算法
以下是C++实现顺序查找算法和二分法查找算法的示例代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 顺序查找算法
int seqSearch(vector<int>& nums, int target) {
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == target) {
return i;
}
}
return -1; // 查找失败
}
// 二分法查找算法
int binarySearch(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) {
return mid;
}
else if (nums[mid] < target) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1; // 查找失败
}
int main() {
vector<int> nums = {3, 5, 2, 8, 4, 7, 1, 6};
sort(nums.begin(), nums.end()); // 二分法查找算法需要有序表
int target = 4;
int index1 = seqSearch(nums, target); // 调用顺序查找算法
int index2 = binarySearch(nums, target); // 调用二分法查找算法
if (index1 != -1) {
cout << "顺序查找成功,目标元素下标为:" << index1 << endl;
}
else {
cout << "顺序查找失败,未找到目标元素" << endl;
}
if (index2 != -1) {
cout << "二分法查找成功,目标元素下标为:" << index2 << endl;
}
else {
cout << "二分法查找失败,未找到目标元素" << endl;
}
return 0;
}
```
以上代码中,我们使用了STL中的vector容器来存储顺序表元素,并使用sort函数对其进行排序,以便二分法查找算法能够正确执行。在main函数中,我们分别调用了顺序查找算法和二分法查找算法,查找目标元素的值为4。最后,根据返回的下标值,输出查找结果。