1.4 C# 算法初识与二维数组

day 4 算法初识与二维数组
1,冒泡排序
冒泡排序涉及双循环,外层循环控制趟数,内层循环控制比较次数
代码:
for(int i=0;i<nums.Length-1;i++){
for(int j=0;j<nums.Length-i-1;j++){
if(nums[j]>nums[j+1]){
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
优化:可以加一个break进行判断,来减少趟数。
代码:
for(int i=0;i<nums.Length-1;i++){
int k=0;
for(int j=0;j<nums.Length-i-1;j++){
if(nums[j]>nums[j+1]){
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
k++;
}
}
if(k==0){
break;
}
}
补充:抽象类 Array
初始化: Array arr=new Array();
创建一个长度为3的整型数组:
Array arr=Array.CreateInstance(typeof(int),3);
为数组元素赋值: arr.SetValue(值,位数);
遍历数组 arr: for(int i=0;i<arr.Length;i++){.....}
取得数组元素的值:arr.GetValue(i);
*排序:Array.Sort(arr);
Array转值类型数组:int[] newArr=(int [])arr;

2,二分查找法
二分查找又称择半查找,优点是比较次数少,查找速度快,平均性能好,其缺点是要求查找表为有序表,且插入删除困难。
升序:
int low=0; //数据初始点
int high=0;//数据终止点
int findNumber=int.Parse(Console.ReadLine()); //要查找的数
while(low<=high){
int mid=low+(high-low)/2;
if(findNumber<arr[mid]){
high=mid-1;
}else if(findNumber>arr[mid]){
low=mid+1;
}else{
Console.WriteLine("mid索引位置的就是要查找的值,索引为:"+mid);
break;
}
}
if(low>high)
{
Console.WriteLine("没有找到");
}

3,二维数组
有两个下标的数组称为二维数组。
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。
动态初始化:
类型[,]数组名=new 类型[常量表达式1,常量表达式2];
第一维长度 第二维长度
静态初始化:
类型[,]数组名={{具体数值1,具体数值2,....},{具体数值1,具体数值2..}...};
标准行列式:
二维数组静态初始化定义时,第一维的个数可以是任意的,但是第二维的个数必须相同。
锯齿数组:不标准的行列式,列数可以不固定。
int[][] twodim=new int[i][];
twodim[0]=new int[]{1,2,3};
....
补充:
C#的foreach循环语句用于对数值,字符串及集合类型。
foreach 循环语句格式:
foreach(迭代类型 迭代变量名 in 数组名){
//foreach循环语句循环体
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值