lwj_C#_排序

来源:互联网 发布:网络安全技术重要 编辑:程序博客网 时间:2024/05/01 02:39
//         //插入排序    //插入是稳定排序,选择是不稳定排序
//            int [] num = {12, 95, 83, 65, 234, 63};
//            
//            for (int i = 1; i < num.Length ; i++) {
//                int temp = num[i];
//                int j = i - 1;
//                //和前一位比,一直往前比

//               //j是从i的前一位开始依次向前减一;

                 //当下标j对应的数组元素比下标为i对应的元素大的时候,数组中有序数组向后移一位,一直比较,直到不满足条件、不能比较;

//                for (; j >= 0 && num[j] > temp ; j--) {
//                    //后移
//                    num [j + 1] = num [j];

//                }

//                //插入

                //上面循环比较 元素后移彻底结束后插入 ,j+1就是要插入的元素应该放的坐标,j+1是因为上面循环执行了j--操作,不能直接用j;

//                num[j + 1] = temp;
//            }
//            for (int i = 0; i < num.Length ; i++) {
//                Console.WriteLine (num[i]);

//            }


            //冒泡排序 
//            //外层循环决定趟数
//            int [] numbers = {12, 23, 34, 24, 56, 11, 9, 38, 89, 66};
//            int n = numbers.Length;
//            for (int i = 0; i < n - 1; i++) {
//            //内层循环控制比较次数
//                for (int j = 0; j < n - (i + 1); j++) {
//                    //数组中前一个元素和后一个元素做比较;
//                    if (numbers[j] > numbers [j + 1]) {           //if(names[j].ConpareTO (names[j + 1] == 1))
//                        int temp = numbers [j];
//                        numbers [j] = numbers [j + 1];
//                        numbers [j + 1] = temp;
//                    }
//                }
//            }
//            foreach (int j in numbers ) {
//                Console.WriteLine ("{0}",j);
//            }



            //选择排序
//            int [] numbers = {12, 23, 34, 24, 56, 11, 9, 38, 89, 66};
//            int n = numbers.Length;
//            //每次只找一个最小数,最后一个不找  循环n-1趟
//            for (int i = 0; i < n - 1; i++) {
//
//                int min = numbers [i];//用来存本趟比较中最小值;
//                int minIndex = i; //记录最小值下标位置;
//                //  j 记录下标   内层for循环找这一趟的最小值;
//                for (int j = i + 1; j < n; j++) {
//                    if (min > numbers [j]) {
//                        min = numbers [j];
//                        minIndex = j;
//                    }
//                }
//                //最小值和当前无序(剩余)数组的第一个元素交换
//                numbers [minIndex] = numbers [i];
//                numbers [i] = min;
//            }
//            //遍历数组
//            foreach (int a in numbers ) {
//                Console.WriteLine ("{0}", a );
//            }         
//                


    //二分查找
            //有序数组才能二分查找;
            //低位小于等于高位才条件成立;
//            int[] num = {2, 3, 4, 5, 6, 7, 8, 9};
//            int k = int.Parse (Console.ReadLine ());
//            int low = 0;
//            int high = num.Length - 1;
//            while (low <= high) {
//                //折半
//                int mid = (low + high) / 2;
//                if (num [mid] == k) {
//                    Console.WriteLine ("找到,下标为:{0}", mid);
//                    break;
//                } else if (num [mid] > k) {
//                    high = mid - 1;
//                } else {//num[mid] < k
//                    low = mid + 1;
//                }
//            }
//            if (low > high) {
//                Console.WriteLine ("没有找到");
//            }


原创粉丝点击