自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 收藏
  • 关注

原创 插值查找

/// /// 插值查找,是对二分法查找的优化/// 二分法: mid = low + 1/2 (high - low)/// 插值查找:mid = low + ((point-array[low])/(array[high]-array[low]))(high-low)/// 插值优化了mid,使之更接近查找数值在有序序列的实际位置/// /// /// /// /// /// private static int InterpolationSearch(int[] arr, int

2021-01-11 09:24:33 192 1

原创 二分查找

/// /// 二分法查找,非递归方法实现,二分查找的条件是原数组有序/// 没有找到,返回-1;找到了,则返回索引/// /// /// /// /// private static int BinarySearch(int[] arr, int low, int height, int value){if (arr == null || arr.Length == 0 || low >= height){return -1;}int hi = height - 1;i

2021-01-11 09:23:38 169

原创 顺序查找

/// /// 顺序查找/// private static int SequenceSearch(int[] arr, int value){int length = arr.Length;for (int i = 0; i < length; i++){if(arr[i] == value){return i;}}return -1;}

2021-01-11 09:23:08 182

原创 万年历

protected void Page_Load(object sender, EventArgs e){createCalendar(DateTime.Now.Year, DateTime.Now.Month);}private void createCalendar(int year, int month){int days = DateTime.DaysInMonth(year, month);//得到当月的天数DateTime dt = new DateTime(year, month

2021-01-11 09:22:21 138

原创 C# 矩阵运算(加减乘、转置、求逆)

class Matrix{ /// <summary> /// 矩阵的转置 /// </summary> /// <param name= "iMatrix "> </param> public static double[,] Transpose(double[,] iMatrix) { int row = iMatrix.GetLength(0);

2021-01-11 09:21:13 510

原创 桶排序

/// /// 桶排序/// 类似于哈希表的拉链法,定义一个映射函数,将值放入对应的桶中/// 最坏时间情况:全部分到一个桶中O(N^2),一般情况为O(NlogN)/// 最好时间情况:每个桶中只有一个数据时最优O(N)/// int bucketNum = arr.Length;/// 映射函数:int bucketIndex = arr[i] * bucketNum / (max + 1);/// /// /// 数组的最大值/// private static int[] Bu

2021-01-11 09:19:48 93

原创 归并排序(List版本)

/// /// 归并排序 List版本/// 将两个(或两个以上)有序表合并成一个新的有序表/// public static List MergeSort(List list){int count = list.Count;if (count <= 1){return list;}int mid = count / 2;List left = new List();//定义左侧ListList right = new List();//定义右侧List //

2021-01-11 09:19:06 313

原创 归并排序

/// /// 归并排序 递归版本/// 将两个(或两个以上)有序表合并成一个新的有序表/// private static void MergeSort(int[] arr, int length){int[] temp = new int[length];MergeInternalSort(arr, 0, length, temp);} private static void MergeInternalSort(int[] arr, int first, int last, in

2021-01-11 09:17:59 67 1

原创 三向切分的快速排序

快速排序在实际应用中会面对大量具有重复元素的数组。相比原生的快排,有巨大的改进潜力。(从O(nlgn)提升到O(n))E.W.Dijlstra(对,就是Dijkstra最短路径算法的发明者)提出的算法是:对于每次切分:从数组的左边到右边遍历一次,维护三个指针,其中lt指针使得元素(arr[0]-arr[lt-1])的值均小于切分元素;gt指针使得元素(arr[gt+1]-arr[N-1])的值均大于切分元素;i指针使得元素(arr[lt]-arr[i-1])的值均等于切分元素,(arr[i]-arr[g

2021-01-11 09:16:40 349

原创 阶乘递归算法

//递归算法static int DiGui(int n){int sum = 0;if (0 == n){return 1;}else{sum = n * DiGui(n-1);}return sum;}

2021-01-11 09:11:15 178

原创 变异操作

/// /// 变异操作;/// private static void VariationOperate(){int rand = random.Next(0, 50);Console.WriteLine("变异的rand " + rand);if (rand < 5)//5/50 = 0.1的概率进行变异;rand<5;{Console.WriteLine(“开始变异”);int col = random.Next(0, 6);int row = random.Next

2021-01-07 13:39:48 653 1

原创 交叉操作

/// /// 交叉操作;/// private static void CrossOperate(){/** bit[0]~bit[5] fit* 4 000 110 12* 3 001 010 9* child1 000 010 14* child2 001 110 5*/int rand1 = random.Next(0, 6);//0-5;int rand2

2021-01-07 13:39:21 516

原创 轮盘赌

/// /// 更新下一代;/// 基于轮盘选择选择方法,进行基因型的选择;/// private static void UpdateNext(){// 获取总的fit;double totalFitValue = 0;for (int i = 0; i < chromosomes.Count; i++){//适应度为负数的取0;if (chromosomes[i].fitValue <= 0){totalFitValue += 0;}else{totalFi

2021-01-07 13:38:37 369

原创 算法时间测试

C#算法时间测试类Timing: public class Timing{ TimeSpan startingtime; TimeSpan duration; public Timing() { startingtime = new TimeSpan(0); duration = new TimeSpan(0); } public void stoptime() { d

2021-01-07 13:37:57 146

原创 凸包算法

private List calcConvexHull(List list){List resPoint = new List();//查找最小坐标点int minIndex = 0;for (int i = 1; i < list.Count; i++){if (list[i].Y < list[minIndex].Y){minIndex = i;}}Point minPoint = list[minIndex];resPoint.Add(list[minIndex]

2021-01-07 13:36:40 113

原创 在1~10000的整数中,找出同时符合以下条件的数:a.必须是质数。b.该数字各位数字之和为偶数,如数字12345,各位数字之和为1+2+3+4+5=15,不是偶数。

using System;using System.Collections.Generic;class program { static void Mian(string[] args) { int N =1000; List<int> primes = new List<int>(); primes.Add(2); Console.Write(2+" "); for(int

2021-01-07 13:35:00 381

原创 九九乘法表

static void Mu(){string t = string.Empty;for (int i = 1; i < 10; i++){for (int j = 1; j <= i; j++){t = string.Format("{0}*{1}={2} “, j, i, (j * i));Console.Write(t);//if (j * i < 82)// Console.Write(” “);if (i == j)Console.Write(”\n

2021-01-07 13:34:11 102

原创 1、1、1、2、3、5、8、13、21、34,....用C#递归写出算法,算出第30个数。

using System;class Program{static in F(int i){if(i<=0)return 0;else if(i>0 && i<=2)return 1;else return F(i-1) + F(i-2);} static void Main(string[] args) { int n = F(30); Console.WriteLine(n.ToString());

2021-01-07 13:31:47 936

原创 一个6位数乘以一个3位数,得到一个结果。但不清楚6位数的两个数字是什么,而且结果中有一位数字也不清楚,请编程找出问好代表的数字,答案可能有多个。

for (int a = 0; a < 10; a++){for (int b = 0; b < 10; b++){for (int c = 0; c < 10; c++){if ((120560 + a + b * 1000) * 123 == 15404987 + c * 10000){Console.WriteLine(a);Console.WriteLine(b);Console.WriteLine©;}}}}Console.Read();

2021-01-07 13:30:45 477

原创 堆排序

/*堆排序是一种选择排序,时间复杂度为O(nlog2n)。堆排序的特点是:在排序过程中,将待排序数组看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中父结点和子结点之间的内在关系,在当前无序区中选择关键字最大(或最小)的记录。基本思想1.将待排序数组调整为一个大根堆。大根堆的堆顶元素就是这个堆中最大的元素。2.将大根堆的堆顶元素和无序区最后一个元素交换,并将无序区最后一个位置列入有序区,然后将新的无序区调整为大根堆。3.重复操作,直到无序区消失为止。初始时,整个数组为无序区。每一次

2021-01-07 13:29:36 89

原创 插入排序

/*直接插入排序(straight insertion sort)的做法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置使有序表仍然有序,直至无序表中所有元素插入完为止。第一趟扫描前两个数,然后把第二个数按大小顺序插入到有序表中;第二趟把第三个数与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序属于稳定的排序,最坏时间复杂度为O(n^2),空间复杂度为O(1)。直接插入排序是由两层嵌套循环组成的。

2021-01-06 16:07:43 261

原创 折半查找法

/*Recursive Binary Search - by Chimomo[折半查找的前提]:1、待查找序列必须采用顺序存储结构。2、待查找序列必须是按关键字大小有序排列。时间复杂度:O(log2n)*/namespace RecursiveBinarySearch{using System;/// <summary>/// The program./// </summary>internal class Program{ /// &lt

2021-01-06 16:06:34 246

原创 希尔排序法

操作步骤:初始时,有一个大小为 10 的无序序列。(1)在第一趟排序中,令增量d = N / 2 = 5,即相隔距离为 5 的元素组成一组,可以分为 5 组。(2)按照直接插入排序的方法对每个组进行排序。(3)在第二趟排序中,我们把上次的 d 缩小一半,即 d= d / 2 = 2 (取整数)。这样每相隔距离为 2 的元素组成一组,可以分为 2 组。(4)按照直接插入排序的方法对每个组进行排序。(5)在第三趟排序中,再次把 d 缩小一半,即d = d / 2 = 1。 这样相隔距离为 1 的元素

2021-01-06 13:49:17 234

原创 高斯模糊算法

/// /// 高斯模糊/// /// /// /// public static void GaussianBlur(this Bitmap Bmp, ref Rectangle Rect, float Radius){int Result;IntPtr BlurEffect;BlurParameters BlurPara;if ((Radius < 0) || (Radius > 255)){throw new ArgumentOutOfRangeException

2021-01-06 13:48:08 187

原创 快速排序

/*快速排序(QuickSort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。设要排序的数组是a[0]…a[N-1],首先任意选取一个数据(通常选用数组的首元素)作为关键数据,然后将所有比它小的数都放到它的前面,所有比它大的数都放到它的后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定

2021-01-06 13:47:28 71

原创 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

class Program{static void Main(string[] args){ //有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? //分解题目 //条件:四个数字1、2、3、4 ;三位数:百位、十位、个位 //要求:互不相同;无重复数字:每个数字在三位中只出现一次 //结果:多少个? 都是多少? int count = 0;

2021-01-06 13:45:01 228

原创 选择排序

选择排序是一种简单直观的排序算法。它的工作原理如下。首先在未排序列中找到最小的元素,存放到排序序列的起始位置。然后,在从剩余未排序元素中继续寻找最小的元素,放到排序序列末尾。以此类推,直到所有元素均排序完毕。class SelectSorter{private static int[] myArray;private static int arraySize;public static void Sort(int[] a){myArray = a;arraySize = myArray.L

2021-01-06 13:44:29 117

原创 冒泡排序

namespace BubbleSorter{class BubbleSorter{private static int[] myArray;private static int arraySize;public static void Sort(int[] a){myArray = a;arraySize = myArray.Length;BubbleSort(myArray);} public static void BubbleSort(int[] myArray)

2021-01-06 13:43:43 75

原创 C#算法:1-2+3-4....+n

static int F1(int m){int sum =0;bool flag =true;for (int i = 1; i <= m; i++){if (flag) //一次是默认是True,下下也为Truesum += i;elsesum -= i;flag = !flag; } return sum; }//方法二,通过奇偶性static int F2(int m){int sum = 0;for (int i = 1; i &

2021-01-06 13:43:05 2104

原创 C#常用算法总结

/// /// 1+2+3+…+n的递归算法/// /// /// public static int Process1( int i){//计算1+2+3+4+…+100的值 if (i == 0) return 1; if (i == 1) return 1; return Process1(i - 2) + Process1(i - 1); } /// <summary> /// 1+2+3+....+n的非递归算法 /// </

2021-01-06 13:40:58 528

原创 C#算法

using System;using System.Security.Cryptography;using System.IO;using System.Text;//1、将字符串转换成字节数组//2、选择加密方式//3、不可逆加密:MD5、SHA1//4、可逆加密:DES、RC2、Rijndael//5、对密钥要求长度不同//6、加密速度不同、复杂程度不同、安全性不同public class Class10{public Class10(){CallMyDES();}voi

2021-01-05 13:43:32 107

原创 C++ 无条件转移控制

goto转移控制goto <语句标记>;<语句标记>是个标识符,定义格式为<语句标记>: <语句>;注意:不能用goto语句从函数外部转入函数的内部,也不能从函数内部转入到函数的外部; 一般情况,很少使用goto语句从复合语句外部转到复合语句内部,多用于从复合语句内部转到复合语句外部,如退出多重循环(goto语句会破坏程序的结构,只有偶尔在这种情况下才使用),但是要是否会跳过变量定义语句,否则该就goto语句是非法的。bre..

2021-01-05 13:41:28 88

原创 C++ main函数的返回值

main函数通过返回值把整个程序的执行情况告诉调用者(通常是操作系统,但是操作系统通常会忽视main函数的返回值),一般情况下return 0表示正常结束,return -1表示非正常结束。main函数也可以不写return语句,这时当执行完最后一条语句后自动执行一条“return 0;”语句。其他函数的返回值原理同此。...

2021-01-05 13:40:20 495

原创 C++ 引用类型

引用类型:可以获得指针类型的效果,但是又可以避免指针可读性和可维护性差等问题。定义<类型> &<引用变量>;定义时要初始化<类型>可以是除了void以外的任意C++类型。如: int x=0; int &y=x;y=2;//此时x也是2引用类型 VS 指针类型1)二者访问语法不同,指针是 *<指针变量> ,引用是<引用变量>2)引用类型除了定义时指定的被引用变量外,不能再引用其他变量。3)该变量没有自己的内

2021-01-05 13:40:08 94

原创 算法 - 求n个数的中位数(C++)

#include #include #include #include <math.h>using namespace std;int QuickSortOnce(int a[], int low, int high) {// 将首元素作为枢轴。int pivot = a[low];int i = low, j = high;while (i < j) { // 从右到左,寻找首个小于pivot的元素。 while (a[j] >= pivot &a

2021-01-05 13:39:55 1023

原创 求两个自然数的最小公倍数

int GreatestCommonDivisor(int a, int b) {int t;if (a < b) { // 交换两个数,使大数放在a的位置上。 t = a; a = b; b = t;}while (b != 0) { // 利用辗转相除法,直到b为0为止。 t = a % b; a = b; b = t;}return a;}int LeastCommonMultiple(int a, int b

2021-01-05 13:39:24 172

原创 求圆面积和周长

class Circle{private :float radius;public:Circle(float r);Circle(Circle &C);float Area();float Girth();};Circle::Circle(float r){radius=r;}float Circle::Area(){return PIradiusradius;}float Circle::Girth(){return 2PIradius;}void ma

2021-01-05 13:39:09 99

原创 输出字符的ASCII码

#include using namespace std;int main(){char c;cin>>c;cout<<(int)c<<endl;return 0;}

2021-01-05 13:38:50 719

原创 C/C++

问1:请用简单的语言告诉我C++ 是什么?答:C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!问2:C和C++的区别?答:c++在c的基础上增添类,C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制

2021-01-05 13:38:21 94

原创 C++ 成员的访问控制

public访问不受限制,在程序的任何地方都能访问一个类的public成员。public成员是类与外界的一个接口。private默认的访问控制只能在本类和友元中访问。protected只能在本类、派生类和友元中访问。...

2021-01-05 13:38:04 107

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除