#include <bits/stdc++.h>
using namespace std;
void quick_sort(int q[],int left,int right){
if(left>=right){//判断停止条件
return;
}
int x = q[left];
int i = left;
int j = right;
while(i<j){//循环条件
while(q[i]<x)i++;
while(q[j]>x)j--;//注意是--
if(i<j) swap(q[i],q[j]);
}
for(i = left;i<=right;i++){
cout<<q[i]<<" ";
}
cout<<endl;
quick_sort(q,left,j);
quick_sort(q,j+1,right);
}
int main(){
int arr[7] = {3,8,0,1,7,5,2};
int i;
quick_sort(arr,0,6);
for(i = 0;i<7;i++){
cout<<arr[i]<<" ";
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int tmp[7];
void merge_sort(int q[],int left,int right){
if(left>=right) return;//有等于
int mid = (left+right) >>1;//平均值
merge_sort(q,left,mid);
merge_sort(q,mid+1,right);
int k = 0;
int i = left;
int j = mid+1;
while(i<=mid &&j <=right){
if(q[i]<=q[j])
tmp[k++] = q[i++];
else
tmp[k++] = q[j++];
}
while(i<=mid)
tmp[k++] = q[i++];
while(j<=right)
tmp[k++] = q[j++];
for(i = left,j = 0;i <= right;i++,j++)
q[i] = tmp[j];
}
int main(){
int arr[7] = {3,8,0,1,7,5,2};
int i;
merge_sort(arr,0,6);
for(i = 0;i<7;i++){
cout<<arr[i]<<" ";
}
return 0;
}
整数二分查找
int bsearch_1(int q[],int left,int right,int target){
while(left<right){
int mid=(left+right)>>1;
if(q[mid] >= target) right=mid;
else left=mid+1;
}
return left;
}
int main(){
int arr[7] = {0,1,2,3,5,7,8};
int i;
int x = bsearch_1(arr,0,6,7);
cout<<x<<":"<<arr[x]<<endl;
return 0;
}
浮点数二分查找待补充