#include<iostream>
using namespace std;
//归并函数
void merge(int a[], int left,int mid,int right) {
int temp[10];
int i = left;
int j = mid+1;
int k = left;
while(i<=mid&&j<=right){ //第一个while
if (a[i]<=a[j]) temp[k++] = a[i++];
else temp[k++] = a[j++];
}
while (i <= mid) temp[k++] = a[i++];//第二个while
while (j <= right) temp[k++] = a[j++];//第三个while
for (int x = left; x <= right; x++) a[x] = temp[x];
}
//划分函数
void mergeSort(int a[],int left,int right) {
int mid = (left + right) / 2;
if (left < right) {
mergeSort(a, left, mid); //划分左边
mergeSort(a, mid + 1, right); //划分右边
merge(a, left, mid, right);
}
}
//打印数组
void printArr(int a[]) {
for (int i = 0; i < 10; i++)
{
cout << a[i] <<" ";
}
}
int main() {
int arr[10] = { 5, 3, 9, 8, 2, 4, 1, 7, 6, 0 };
mergeSort(arr,0,9);
printArr(arr);
}
归并排序的3个while
于 2023-11-02 20:36:19 首次发布