c++与Java版本的折半排序源码
时间: 2023-07-16 07:12:49 浏览: 56
C++版本的折半排序源码:
```c++
#include <iostream>
using namespace std;
void binaryInsertionSort(int arr[], int n)
{
for (int i = 1; i < n; i++) {
int x = arr[i];
int j = i - 1;
int left = 0, right = i - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
while (j >= left) {
arr[j + 1] = arr[j];
j--;
}
arr[left] = x;
}
}
int main()
{
int arr[] = { 5, 2, 4, 6, 1, 3 };
int n = sizeof(arr) / sizeof(arr[0]);
binaryInsertionSort(arr, n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
Java版本的折半排序源码:
```java
public class BinaryInsertionSort {
public static void binaryInsertionSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int x = arr[i];
int j = i - 1;
int left = 0, right = i - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
while (j >= left) {
arr[j + 1] = arr[j];
j--;
}
arr[left] = x;
}
}
public static void main(String[] args) {
int[] arr = { 5, 2, 4, 6, 1, 3 };
binaryInsertionSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
```