Übungen zur Datenstruktur (Suchen und Sortieren)

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:
Bildbeschreibung hier einfügen
2. Quick Sort aufrufen, um die generierten Zufallszahlen zu sortieren:
Bildbeschreibung hier einfügen
3. Binäre Suche: (Finde das Ergebnis, gib den Index zurück, wenn nicht gefunden, gib -1 zurück)
Bildbeschreibung hier einfügen

Ich denke du magst

Origin blog.csdn.net/weixin_46220576/article/details/123094560
Empfohlen
Rangfolge