补充:二分查找,冒泡,选择
2017-12-27 21:41
316 查看
using System;
namespace lesson04_01
{
class MainClass
{
public static void Main (string[] args)
{
/*
* 用冒泡排序法排列数组下列数组并打印排序后的数组:
* double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10.5, 8 };
*/
/*
double[] arr = {12,90,14,84,34,9,23,55,10,5,8};
int i, j,k;
double temp;
for (j = 1; j <= arr.Length; j++) {
for (i = 0; i <= arr.Length - j-1; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
for (k = 0; k < 11; k++) {
Console.WriteLine(arr[k]);
}
*/
/*
用选择排序法排列数组下列数组并打印排序后的数组:
double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };
int j, i, index,h;
double min;
for (j = 0; j < arr.Length; j++)
{
min = arr[j];
index = j;
for (i = j+1; i < arr.Length; i++)
{
if (arr[i] < min)
{
min = arr[i];
index = i;
}
}
arr[index] = arr[j];
arr[j] = min;
}
for (h = 0; h < arr.Length; h++)
{
Console.WriteLine(arr[h]);
}
Console.ReadKey();
*/
//四道数组练习--临时存放
//练习1:从⼀一个整数数组中取出最⼤大的整数
/*double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };
*
int i;
double max = arr[0];
for(i= 0; i < arr.Length; i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
Console.WriteLine(max);
Console.ReadKey();
*/
//练习2:计算⼀一个整数数组的所有元素的和
/*
double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };
int i;
double sum=0;
for (i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
Console.WriteLine(sum);
Console.ReadKey();
*/
/*练习3:将⼀一个字符串串数组输出为|分割的形式,
比如“梅梅⻄西 | 卡卡 | 郑⼤大世”
string[] strarr = { "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾", "佰", "仟", "萬" };
int i;
for(i = 0;i < strarr.Length; i++)
{
if (i < strarr.Length-1)
{
Console.Write("{0}|",strarr[i]);
}
else
{
Console.Write(strarr[i]);
}
}
Console.ReadKey();
*/
/*
* 练习4:将⼀一个字符串串数组的元素的顺序进⾏行行反转。
{“3”,“a”,“8”,“haha”}
{“haha”,“8”,“a”,“3”}。
第i个和第length-i-1个进⾏行行交换。
*/
/*
string[] arr = {"东","3","a","1","2","8","haha","西"};
int i,j;
string temp;
for (i = 0; i < arr.Length / 2; i++)
{
temp = arr[i];
arr[i] = arr[arr.Length - 1 - i];
arr[arr.Length - 1 - i] = temp;
}
for (j = 0; j < arr.Length; j++)
{
Console.WriteLine(arr[j]);
}
Console.ReadKey();
*/
/*三道-临时存放
* 1.编程将所有“水仙花数”打印出来,并打印其总个数。
“水仙花数”是一个 各个位立方之和等于该整数的三位数。
int i, sum,a,b,c,n=0;
for (i = 100; i < 1000; i++)
{
a = i / 100;
b = i % 100 / 10;
c = i % 10;
sum = a * a * a + b * b * b + c * c * c;
if (sum == i)
{
Console.WriteLine(i);
n++;
}
}
Console.WriteLine(n);
Console.ReadKey();
2.自定义一个数组并求数组中的所有元素最大值、最小值、平均值及各元素之和。
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int i, sum=0, average=0, max=0, min=0;
for(i = 0; i < arr.Length; i++)
{
if (max < arr[i])
{
max = arr[i];
}
if (min > arr[i])
{
min = arr[i];
}
sum += arr[i];
average = sum / arr.Length;
}
Console.WriteLine("max={0}\nmin={1}\naverage={2}\nsum={3}",max,min,average,sum);
Console.ReadKey();
3.已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
int i, a, b, c, sum,n=0;
for (i = 100; i < 1000; i++)
{
a = i / 100;
b = i % 100 / 10;
c = i % 10;
sum = i + c * 100 + b * 10 + a;
if(sum == 1333)
{
n++;
Console.WriteLine("第{0}组:a={1} b={2} c={3}",n,a,b,c);
}
}
Console.ReadKey();
*/
/*
* while循环条件low!=high
* 比较key,arr[mid] , mid = (low +high)/2
* 当key在左边缩小high=mid,当key在右边提升low=mid;
*
*/
/*二分查找,先排序
double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };
int i, j, index, h;
double min;
for (j = 0; j < arr.Length; j++)
{
min = arr[j];
index = j;
for (i = j + 1; i < arr.Length; i++)
{
if (arr[i] < min)
{
min = arr[i];
index = i;
}
}
arr[index] = arr[j];
arr[j] = min;
}
int key = int.Parse(Console.ReadLine());
int low = 0, high = arr.Length,mid;
while (low <= high)
{
mid = (low + high) / 2;
if (arr[mid] == key)
{
Console.WriteLine("你要找的数是:{0}他是该数组的{1}个元素",arr[mid],mid+1);
break;
}
else if (arr[mid] > key)
{
high = mid - 1;
}
else {
low = mid + 1;
}
}
if (low > high)
{
Console.WriteLine("你要查找的数不在该数组中!");
}
Console.ReadKey();
*/
}
}
}
namespace lesson04_01
{
class MainClass
{
public static void Main (string[] args)
{
/*
* 用冒泡排序法排列数组下列数组并打印排序后的数组:
* double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10.5, 8 };
*/
/*
double[] arr = {12,90,14,84,34,9,23,55,10,5,8};
int i, j,k;
double temp;
for (j = 1; j <= arr.Length; j++) {
for (i = 0; i <= arr.Length - j-1; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
for (k = 0; k < 11; k++) {
Console.WriteLine(arr[k]);
}
*/
/*
用选择排序法排列数组下列数组并打印排序后的数组:
double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };
int j, i, index,h;
double min;
for (j = 0; j < arr.Length; j++)
{
min = arr[j];
index = j;
for (i = j+1; i < arr.Length; i++)
{
if (arr[i] < min)
{
min = arr[i];
index = i;
}
}
arr[index] = arr[j];
arr[j] = min;
}
for (h = 0; h < arr.Length; h++)
{
Console.WriteLine(arr[h]);
}
Console.ReadKey();
*/
//四道数组练习--临时存放
//练习1:从⼀一个整数数组中取出最⼤大的整数
/*double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };
*
int i;
double max = arr[0];
for(i= 0; i < arr.Length; i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
Console.WriteLine(max);
Console.ReadKey();
*/
//练习2:计算⼀一个整数数组的所有元素的和
/*
double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };
int i;
double sum=0;
for (i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
Console.WriteLine(sum);
Console.ReadKey();
*/
/*练习3:将⼀一个字符串串数组输出为|分割的形式,
比如“梅梅⻄西 | 卡卡 | 郑⼤大世”
string[] strarr = { "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾", "佰", "仟", "萬" };
int i;
for(i = 0;i < strarr.Length; i++)
{
if (i < strarr.Length-1)
{
Console.Write("{0}|",strarr[i]);
}
else
{
Console.Write(strarr[i]);
}
}
Console.ReadKey();
*/
/*
* 练习4:将⼀一个字符串串数组的元素的顺序进⾏行行反转。
{“3”,“a”,“8”,“haha”}
{“haha”,“8”,“a”,“3”}。
第i个和第length-i-1个进⾏行行交换。
*/
/*
string[] arr = {"东","3","a","1","2","8","haha","西"};
int i,j;
string temp;
for (i = 0; i < arr.Length / 2; i++)
{
temp = arr[i];
arr[i] = arr[arr.Length - 1 - i];
arr[arr.Length - 1 - i] = temp;
}
for (j = 0; j < arr.Length; j++)
{
Console.WriteLine(arr[j]);
}
Console.ReadKey();
*/
/*三道-临时存放
* 1.编程将所有“水仙花数”打印出来,并打印其总个数。
“水仙花数”是一个 各个位立方之和等于该整数的三位数。
int i, sum,a,b,c,n=0;
for (i = 100; i < 1000; i++)
{
a = i / 100;
b = i % 100 / 10;
c = i % 10;
sum = a * a * a + b * b * b + c * c * c;
if (sum == i)
{
Console.WriteLine(i);
n++;
}
}
Console.WriteLine(n);
Console.ReadKey();
2.自定义一个数组并求数组中的所有元素最大值、最小值、平均值及各元素之和。
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int i, sum=0, average=0, max=0, min=0;
for(i = 0; i < arr.Length; i++)
{
if (max < arr[i])
{
max = arr[i];
}
if (min > arr[i])
{
min = arr[i];
}
sum += arr[i];
average = sum / arr.Length;
}
Console.WriteLine("max={0}\nmin={1}\naverage={2}\nsum={3}",max,min,average,sum);
Console.ReadKey();
3.已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
int i, a, b, c, sum,n=0;
for (i = 100; i < 1000; i++)
{
a = i / 100;
b = i % 100 / 10;
c = i % 10;
sum = i + c * 100 + b * 10 + a;
if(sum == 1333)
{
n++;
Console.WriteLine("第{0}组:a={1} b={2} c={3}",n,a,b,c);
}
}
Console.ReadKey();
*/
/*
* while循环条件low!=high
* 比较key,arr[mid] , mid = (low +high)/2
* 当key在左边缩小high=mid,当key在右边提升low=mid;
*
*/
/*二分查找,先排序
double[] arr = { 12, 90, 14, 84, 34, 9, 23, 55, 10, 5, 8 };
int i, j, index, h;
double min;
for (j = 0; j < arr.Length; j++)
{
min = arr[j];
index = j;
for (i = j + 1; i < arr.Length; i++)
{
if (arr[i] < min)
{
min = arr[i];
index = i;
}
}
arr[index] = arr[j];
arr[j] = min;
}
int key = int.Parse(Console.ReadLine());
int low = 0, high = arr.Length,mid;
while (low <= high)
{
mid = (low + high) / 2;
if (arr[mid] == key)
{
Console.WriteLine("你要找的数是:{0}他是该数组的{1}个元素",arr[mid],mid+1);
break;
}
else if (arr[mid] > key)
{
high = mid - 1;
}
else {
low = mid + 1;
}
}
if (low > high)
{
Console.WriteLine("你要查找的数不在该数组中!");
}
Console.ReadKey();
*/
}
}
}
相关文章推荐
- java冒泡,选择排序及折半(二分)查找
- 插入,冒泡,选择,快速排序,二分查找
- 冒泡 选择 插入排序 顺序 二分查找方法
- 排序----冒泡,选择,插入,二分查找
- Java--冒泡、选择排序,二分查找
- 再看冒泡和选择排序以及折半查找(二分查找)
- c语言归并、选择、直接插入、冒泡、快速、堆排序与顺序、二分查找
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 各种排序方法(冒泡,快速,插入,选择),二分查找
- 排序算法:冒泡、选择、二分查找
- 冒泡、选择、二分查找排序
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 冒泡 选择 插入排序 二分查找 代码备忘
- 第四篇、C_快速、冒泡、选择、插入排序、二分查找排序、归并、堆排序
- 黑马程序员——Java基础--冒泡、选择、二分查找
- 插入,冒泡,选择,快速排序,二分查找
- 顺序表的增删改查及冒泡、选择排序、二分查找
- 排序方法之冒泡(鸡尾酒)、选择、插入(二分插入)、希尔排序
- Java冒泡,快速,插入,选择排序^_^+二分算法查找