JACK_C#_一维数组

来源:互联网 发布:淘宝怎样撤销物流投诉 编辑:程序博客网 时间:2024/06/05 09:22
            #region 自己独立写出冒泡排序及选择排序,插入排序
//            冒泡排序
            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