// 冒泡排序
int[] arr = {24,34,6,56,3,76,4,47};
for (int i = 0; i < arr.Length - 1 ; i++) {
for (int j = 0; j < arr.Length- 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < arr.Length; i++) {
Console.Write("{0} ",arr[i]);
}
// 选择排序
int[] arr = {24,34,6,56,3,76,4,47};
for (int i = 0; i < arr.Length - 1; i++) {
int min = arr[i];
int minIndex = i;
for (int j = i + 1; j < arr.Length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
arr[i] = min;
arr[minIndex] = a[i];
}
foreach (int a in arr) {
Console.Write("{0} ",a);
}
int[] arr = {6,5,9,16,45,35,8,25,22,31};
for (int i = 1; i < arr.Length; i++)
{
int tmp = arr[i];
int j = i - 1;
while (j >= 0 && tmp < arr[j])
{arr[j + 1] = arr[j]; //后移一位
j--;
}
arr[j + 1] = tmp; //把值放入合适位置
}
for (int i = 0; i < arr.Length;i++)
{
Console.Write("{0} ", arr[i]);
}
#endregion
#region 找出数组元素中,差值(绝对值)最小的两个元素。
int[] arr = {-24,34,-6,56,-3,-76,4,-47};
int D_value_min = Math.Abs(arr[0]-arr[1]); // 专有名词大写
int minIndex1 = 0;
int minIndex2 = 1;
for (int i = 0; i < arr.Length - 1; i++) {
for (int j = i + 1; j < arr.Length; j++) {
int D_value = Math.Abs (arr[i]-arr[j]);
if (D_value_min > D_value)
D_value_min = D_value;
{
minIndex1= i;
minIndex2= j;
}
}
}
Console.WriteLine ("{0},{1}",arr[minIndex1],arr[minIndex2]);
#endregion
#region 使用数组描述正整数的二进制表示,如5,则数组为{1,0,1}
方法一
int number = int.Parse(Console.ReadLine());
string binary = Convert.ToString(number,2);
char[] ch = binary.ToCharArray();
Console.WriteLine (ch);
方法二
int number = int.Parse(Console.ReadLine());
int i = 0;
int[] arr = new int[32]; //可以用循环求出位数
while(number > 0){
int b = number % 2;
number = number / 2;
arr[i] = b; //首位是个位,所以后面需要倒序
i++;
}
for (int j = i - 1; j >= 0; j--) {
Console.Write ("{0} ",arr[j]);
}
#endregion