数组循环及思路
需要两次循环:
外层循环:循环趟数 n-1;
内层循环:循环次数 n-i;
#region ======冒泡排======
int[] a = new int[8] { 3, 7, 19, 5, 13, 90, 34, 1 };
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < a.Length - i - 1; j++)
{
if (a[j] < a[j + 1])
{
int z = a[j];
a[j] = a[j + 1];
a[j + 1] = z;
}
}
}
for (int i = 0; i < a.Length; i++)
{
Console.Write(a[i] + "\t");
}
#endregion
Console.WriteLine();
Console.WriteLine();
需要一个标记变量。
1、先循环数组,如果有就改变标记变量并且输出,结束循环,使用break;
2.如果没有标记变量没有改变就输出没找到
#region ======顺序查找======
int[] b = new int[8] { 11, 22, 33, 44, 55, 66, 77, 88 };
//接收输入
int find = Convert.ToInt32(Console.ReadLine());
bool cunZai = false;
for (int i = 0; i < b.Length; i++)
{
//对比判断
if (find == b[i])
{
cunZai = true;
Console.WriteLine("找到了");
break;
}
}
if (cunZai == false)
{
Console.WriteLine("没找到");
}
#endregion
Console.WriteLine();
Console.WriteLine();
对照查找:
1、需要三个下标,开始下标,结束下标,中间下标=(开始下标+结束下标)/2
2.先判断中间下标的数与输入的数是否相等,相等就改变标记变量并且输出,结束循环
3、不相等判断大小,数组元素大,就让结束下标 = 中间下标 -1;
数组元素小,就让开始下标 = 中间下标 +1;继续循环
4、如果开始下标大于结束下标说明不能对折了,结束循环
5、判断标记变量输出结果
#region ======对折查找======
int[] c = new int[8] { 11, 22, 33, 44, 55, 66, 77, 88 };
//接收输入
int find_1 = Convert.ToInt32(Console.ReadLine());
int star = 0;
int end = c.Length - 1;
int mid = 0;
bool cunZai_1 = false;
for (; ; )
{
mid = (star + end) / 2;
if (c[mid] == find_1)
{
cunZai_1 = true;
Console.WriteLine("找到了");
break;
}
if (c[mid] > find_1)
{
end = mid - 1;
}
if (c[mid] < find_1)
{
star = mid + 1;
}
//循环完退出
if (star > end)
{
break;
}
}
if (cunZai_1 == false)
{
Console.WriteLine("没找到");
}
#endregion
1、外层循环、给数组赋值
2、内层循环、判断随机数是否与数组内的数相等,相等就重新循环
#region ======彩票36选7 不重======
int[] d = new int[7];
Random rand = new Random();
for (int i = 0; i < 7; i++)
{
int n = rand.Next(36);
n++;
bool cunZai_2 = false;
for (int j = 0; j < d.Length; j++)
{
if (d[j] == n)
{
cunZai_2 = true;
break;
}
}
if (cunZai_2 == false)
{
d[i] = n;
}
else
{
i--;
}
}
for (int i = 0; i < d.Length; i++)
{
Console.WriteLine(d[i]);
}
#endregion