Ejercicios de estructura de datos (búsqueda y clasificación)

Requisitos del título:
1. Genere aleatoriamente 20 000 números, elija dos algoritmos de clasificación con diferente complejidad, desde la clasificación por inserción, la clasificación por burbujas, la clasificación por fusión y la clasificación rápida, y clasifique estos 20 000 números
2. Después de clasificar, use la búsqueda binaria para buscar un Cierto número.
Código de referencia:

#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;
}

Ejecución de resultados:
1. Llame a la ordenación de burbujas para ordenar los números aleatorios generados:
inserte la descripción de la imagen aquí
2. Llame a la ordenación rápida para ordenar los números aleatorios generados:
inserte la descripción de la imagen aquí
3. Búsqueda binaria: (Encuentre el resultado, devuelva el índice, si no lo encuentra, devuelva -1)
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_46220576/article/details/123094560
Recomendado
Clasificación