随笔小屋 Logo
首页
瞬间
反馈
随笔小屋 Logo
首页 瞬间 反馈
  1. 首页
  2. 数据结构与算法
  3. 基础算法

基础算法

  • 数据结构与算法
  • 发布于 2025-09-09
  • 157 次阅读
flor
flor

冒泡排序

void bubble(int arr[],int size){
    for(int i = 0;i<size-1;i++){
        for(int j = 0;j<((size-i)-1);j++){
            if (arr[j]>arr[j+1]){
            int tmp;
            tmp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] =tmp;
            }       
        }
    }   
}
void bubble(int* arr,int size){
    int i,j;
    for(i = size-1;i > 0;i--){
        for(j = 0;j < i;j++){
            if(arr[j] > arr[j+1]){
                int tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    }
}

插入排序

void insert(int arr[],int size){
    int i,j;
    int key;
    for(int i = 1;i<size;i++){ 
        key = arr[i];
        for(j = i-1;j >=0;j--){
             if(arr[j]>key){
                arr[j+1] = arr[j];
             }else{
                break;
             } 
        }
        arr[j+1] = key;       
    }
}

选择排序

void select(int arr[],int size){
    for(int i = 0;i<size-1;i++){
        int min = i;
        for(int j=i+1; j<size;j++){
            if(arr[j]<arr[min]){
                min = j;               
            }
        }
        int tmp;
        tmp=arr[i];
        arr[i] = arr[min];
        arr[min]=tmp;
    }  
}

快速查找

void quick(int num[],int start,int end){
    int i = start;  //起始下标,往后找
    int j = end;    //终止下标,往前找
    int x = num[start];    //基准 
    while(i < j){
        if(num[i] < x){
            i++;
        }
        if(num[j] > x){
            j--;
        }
        int tmp = num[i];
        num[i] = num[j];
        num[j] = tmp;
    }   
    if(start-i > 0){
        quick(num, start,i-1);
    }
    if(end-j > 0){
        quick(num, j+1,end);
    }
}

line_find 顺序查找

折半查找

int half_find(int num[],int size,int data){
    int left = 0;//查找范围的左边界
    int right = size-1;//查找范围的右边界
    while(left <= right){
        int mid = (left + right) / 2;
        if(data < num[mid]){
            //向左找
            right = mid - 1;
        }else if(data > num[mid]){
            //向右找
            left = mid + 1;
        }else{
            //找到了
            return mid;
        }
    }
    return -1;
}

湘ICP备2025147565号-1
gongan beian 湘公网安备43102602000213号
CPU --% | 内存 0.00G/0.00G (0%) | 网络 无活动网卡
服务器资源占用 更新时间 --:--:--