数组循环及思路

需要两次循环:

外层循环:循环趟数  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

posted @ 2018-07-21 17:07  街角的守护  阅读(215)  评论(0编辑  收藏  举报