极角排序与叉乘比较器:从AtCoder激光题看计算几何排序
2026/10/10 3:35:03
#include<stdio.h> int f(int n){ if(n>2){ int result=f(n-1)+f(n-2); return result; } else if(n==2){ return 2; } else if(n==1)} return 1; } } int main(){ int n=4; printf("f(n)=%d",f(n)); return 0;void han(int n ,char qi,char buffer,char zhong){ if(n>1){ han(n-1,qi,zhong,buffer); han(1,qi,buffer,zhong); han(n-1,buffer,qi,zhong); } else if(n==1){ printf("move %c to %c \n",qi,zhong); } int main(){ int n=5; han(n,'a','b','c'); return 0; }void merge(int* arr,int* temp,int left,int mid,int right) { //arr[left]-arr[mid]和arr[mid+1]-arr[right]进行合并 //将arr的内容访问到temp中 for(int i=left;i<=right;++i) { temp[i]=arr[i]; } //i访问左半边,j访问右半边,k存放结果 int i,j,k; for(i =left,j=mid +1,k=left;i<=mid&&j<=right;++k){ if(temp[i]<temp[j]){ arr[k]=temp[i]; ++i; } else{ arr[k]=temp[j]; ++j; } //处理左边没放完的数据 while(i<=mid){ arr[k]=temp[i]; ++i; ++k; } //处理右边没放完的数据 while(j<=right){ arr[k]=temp[j]; ++j; ++k; } //合并做完 } } void mergeSort(int* arr,int *temp,int left,int right){ if(left<right){ int mid =(left+right)/2; mergeSort(arr,temp,left,mid); mergeSort(arr,temp,mid+1,right); merge(arr,temp,left,mid,right); } } int main(){ int arr[]={3,87,2,92,32,53,54,6,56,95}; int temp[10]; mergeSort(arr,temp,0,9); return 0; }