![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构&算法
余花深
实施运维
展开
-
普利姆算法(prem)分治法
#include<stdio.h>//全排列 void swap(int A[],int i ,int j){ //交换函数 int temp = A[i]; A[i]=A[j]; A[j]=temp;}void printArray(int A[], int n){ int i; for (i=0 ; i<n ;i++){ printf("%d",A[i]); } printf("\n");}void perm (int A[],int p, i.原创 2020-11-30 22:42:50 · 325 阅读 · 0 评论 -
汉诺塔算法(递归)
#include<stdio.h> void hanoi(int n, char A,char B,char C){ //将塔A移动至C ,B为辅助 if(n==1){ //递归出口,只有一片时,直接移动 printf("%c -> %c\n", A , C); //这里模拟移动 }else{ //分析:只有两片时,先把上面的一片放到B;然后最底层的放到C;再把B上的摞到C //n片时递归将 //重点在于移动的目标 hanoi(n.原创 2020-11-30 22:41:32 · 163 阅读 · 0 评论 -
二分搜索
#include <stdlib.h>#include <stdio.h> /*二分查找函数binary_search*//*传参需要查找的元素key,输入的数组arr,输入的数组长度n*///分治法 int binary_search(int key, int arr[], int n) { /*声明变量,左边界值left,右边界值right, 中间值mid,用于记录查找次数count,用于记录查找成功次数count1*/ int left, right, .原创 2020-11-30 22:40:15 · 85 阅读 · 0 评论 -
一些常见的排序(正月点灯笼视频笔记)
#include<stdio.h> void swap(int A[],int i ,int j){ //交换函数 int temp = A[i]; A[i]=A[j]; A[j]=temp;}void bubble(int arr[],int n){ //一次冒泡 for(int i=0;i<n-1;i++){ if(arr[i]>arr[i+1]){ swap(arr,i,i+1); } } }void bubbleSort(in.原创 2020-11-30 22:38:29 · 173 阅读 · 0 评论 -
三种不同的快速排序
一、通过覆盖实现的快速排序#include <stdio.h>int partition(int arr[], int low, int high) { //划分 int pivotKey = arr[low]; while (low < high) { //因为默认基准是从左边开始,所以从右边开始比较 //当队尾的元素大于等于基准数据 时,就一直向前挪动 high 指针 while (low < high && arr[hi.原创 2020-11-30 22:36:25 · 206 阅读 · 0 评论 -
2路归并排序(分治)
#include <stdio.h>void merge(int arr[],int L,int M,int R){ int i,j=0,k=L; int left[M-L];//新左子表 int right[R-M+1];//新右子表 for(i=L;i<M;i++) {//复制 left[i-L]=arr[i]; } for(i=M;i<=R;i++) {//复制 right[i-M]=arr[i]; } i=0;j=0;k=L; wh.原创 2020-11-30 22:30:46 · 423 阅读 · 0 评论