Titelanforderungen:
1. Generieren Sie zufällig 20.000 Zahlen, wählen Sie zwei Sortieralgorithmen mit unterschiedlicher Komplexität aus Insertion Sort, Bubble Sort, Merge Sort und Quick Sort und sortieren Sie diese 20.000 Zahlen
2. Verwenden Sie nach dem Sortieren die binäre Suche, um nach a zu suchen bestimmte Nummer.
Referenzcode:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define max 100
#define search_num 999
//冒泡排序
void sort1(int arr[]){
int i,j,temp;
for(i=0; i<max-1; i++){
for(j=0; j<max-1-i; j++){
if(arr[j] > arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
//快速排序
void Quicksort(int arry[],int L,int R){
if(L>=R)
return;
int left=L,right=R;
int pivot=arry[left];
while(left<right){
while(left<right && arry[right]>=pivot){
right--;
}
if(left<right){
arry[left]=arry[right];
}
while(left<right && arry[left]<=pivot){
left++;
}
if(left<right){
arry[right]=arry[left];
}
if(left>=right){
arry[left]=pivot;
}
}
Quicksort(arry,L,right-1);
Quicksort(arry,right+1,R);
}
//二分查找法
int search(int arr[],int left,int right,int key){
while(left<=right){
int mid=(left+right)/2;
if(key==arr[mid])
return mid;
if(key>arr[mid])
left=mid+1;
else
right=mid-1;
}
return -1;
}
int main() {
int arr[max];
int i=0;
//以时间为参数,播种种子
srand((unsigned)time(NULL));
//生成随机数字,装载进数组
while(i<max){
arr[i]=rand();
i++;
}
//调用冒泡排序
printf("调用冒泡排序:\n");
sort1(arr);
//调用快速排序
//printf("调用快速排序 :\n");
//Quicksort(arr,0,max-1);
//打印排序后的数组
int m=0;
while(m<max){
printf("arr[%d]:%d\n",m,arr[m]);
m++;
}
//调用二分查找法
int index=search(arr,0,max-1,search_num);
printf("经过查找,%d的下标为:%d\n",search_num,index);
system("pause");
return 0;
}
Laufende Ergebnisse:
1. Bubble Sort aufrufen, um die generierten Zufallszahlen zu sortieren:
2. Quick Sort aufrufen, um die generierten Zufallszahlen zu sortieren:
3. Binäre Suche: (Finde das Ergebnis, gib den Index zurück, wenn nicht gefunden, gib -1 zurück)