对数据进行排序,最大的和最小的穿插

 List<int> list = new List<int>();
            list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
            int len = list.Count - 1;
            list.Sort();
            list.ForEach(Console.WriteLine);
            List<int> listLast = new List<int>();
            for (int i = len-1; i >=0; i--)
            {
                if (i % 2 == 0)
                {
                    listLast.Add(list.Max());
                    list.Remove(list.Max());
                    continue;
                }
                listLast.Add(list.Min());
                list.Remove(list.Min());
            }
            listLast.ForEach(Console.WriteLine);
            for (int i = len - 1; i >= 0; i--)
            {
                if (i >= (len - 1) / 2)
                    break;
                if (i % 2 == 0)
                    continue;
                int temp = list[i];
                list[i] = list[len - 1];
                list[len - 1] = temp;
            }
            Console.ReadKey();

时间: 2024-12-30 04:31:26

对数据进行排序,最大的和最小的穿插的相关文章

达观数据搜索引擎排序实践

前言 随着互联网的深入发展,人类已然进入大数据时代.如何在浩瀚的数据海洋里高速有效的获取有价值的信息,正是促使大数据技术具备走向众多企业的潜力.搜索引擎作为获取信息的有效入口,已然经历了20多年的发展,并一直试图理解用户搜索意图以及提升搜索的精准性. Google是全球性的搜索引擎,看似简单的搜索框背后隐藏的是极其复杂的系统架构和搜索算法,其中排序(以下统称Ranking)的架构和算法更是关键部分.Google正是通过PageRank算法深刻改变搜索排序而一举击败众多竞争对手. Ranking是

【数据结构】将一组数据升序排序(利用堆排序)

堆排序相对冒泡排序.选择排序效率很高,不再是O(n^2). 假若将一个序列升序排序好,那么我们来考虑最大堆还是最小堆来排序.假若是最小堆的话,堆的顶端必定是堆中的最小值,这样貌似可以.但是,如果是它的(一边或)子树左子树的节点数据值大于(一边或)右子树的节点数据值,直接打印肯定是错误的,而且对于此时的堆我们也无法操控来调整好正确的顺序了. 那我们换成最大堆来实现升序想,当我们把序列调整成为最大堆后,最大堆顶端的数据值是最大的,然后我们将这个最大值与堆的最后一个叶子节点值来进行交换,再将交换后的顶

[经典面试题]排序数组中绝对值最小元素

[题目] 题目为: 有一个已经排序的数组(升序),数组中可能有正数.负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现 例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4. [分析] 给定数组是已经排好序的,且是升序,没有重复元素. 一个简单的思路,就是一次性遍历数组,求出数组的元素的绝对值的最小值,这样的时间复杂度为O(n). 但是,这样就浪费了题目的一个条件:数组是已经排好序的.所以,需要对原来的题目

Highcharts属性与Y轴数据值刻度显示Y轴最小最大值

Highcharts 官网:https://www.hcharts.cn/demo/highcharts Highcharts API文档:https://api.hcharts.cn/highcharts#yAxis.tickmarkPlacement Highcharts属性与Y轴数据值刻度显示Y轴最小最大值 Highcharts.setOptions({global:{useUTC : false}}); $(function(){ //声明报表对象 var chart = new Hig

Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现

Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssql 的实现 NEWID() 跟rand()  1 5. newid()与rand()的区别 2 6. NEWID() 2 7. 参考 2 1. 应用场景 并发测试 2. 随机抽取数据原理 原理是 循环所有的ID/记录,附加随机函数字段,然后排序as 这个字段.. 3. 常用的实现方法:::数据库随机

miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题

最近在使用miniui框架做开发,在做表格行的点击监听事件中发现了几个属性,都可以起到监听效果但是执行的结果却大有不同.好了废话不多说,直接上代码. <div id="pageGrid" class="mini-datagrid" style="width: 100%; height: 100%; border:0;" url="${ctx}/tAXINFO/queryRepeat" autoload="tru

C语言链表中数组实现数据选择排序,升序、降序功能主要难点

链表排序讲解: head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了. head存储的是第一个节点的地址,head->next存储的是第二个节点的地址:  任意一个节点p的地址,只能通过它前一个节点的next来求得. 单向链表的选择排序图示: ---->[1]---->[3]---->[2]...---->[n]---->[NULL](原链表) head   1->next  3->next  2->next

DefaultView 的作用(对DataSet查询出的来数据进行排序)

DefaultView 的作用 收藏    一直以来在对数据进行排序, 条件查询都是直接重复构建SQL来进行, 在查询次数和数据量不多的情况下倒没觉得什么, 但慢慢得, 当程序需要对大量数据椐不同条件进行多次查廛或排序时, 使用这种方式显然对程序的性能影响将会是十分明显的, 在网上找了一下, 发现DATAVIEW能很好的解决这个问题, 其提供了一种简单直观的方式来操作数据, 如下面代码: SqlConnection conn = new SqlConnection("server=.;datab

多线程对800万个数据进行排序

分8个线程对800万个数据分别排序,等所有线程排完序之后,进行简单的多路归并.这和外排的多路归并是一样的,也可以使用优化的胜者树算法. #include <iostream> #include <stdlib.h> #include <pthread.h> #include <limits.h> #include <sys/time.h> using namespace std; #define NTHR 8 /* number of threa

如何从键盘录入数据调用排序算法排序?

如何从键盘录入数据调用排序算法排序? |--如何从键盘录入数据 |--如何用冒泡法排序 源代码如下(详细的注释如下): import java.util.ArrayList; import java.util.Scanner; //  定义键盘输入数据类 public class KeyboardInputData { public static void main(String[] args) { //提示从控制台输入数据,因为while(Scanner.hasNext())无法跳出循环,所以