判断题:

选择题:

编程题:

  7-1 排序:

输入样例:

11
4 981 10 -17 0 -20 29 50 8 43 -5

输出样例:

-20 -17 -5 0 4 8 10 29 43 50 981

代码:

#include <iostream>
using namespace std;
long A[100001];
// 插入排序
void insertion_sort(long A[], int N)
{
for (int P = 1; P < N; P++)
{//数组第=个已经有序
long temp = A[P];//摸一张牌
int i;
for (i = P; i > 0 && A[i - 1] > temp; i--)
A[i] = A[i - 1];
A[i] = temp;
}
}
int main() {
int N;
cin >> N;
for (int i = 0; i < N; i++)
//scanf("%d", &A[i]);
cin>>A[i];
//Bubble_sort(A, N);
insertion_sort(A, N);
cout << A[0];
for (int i = 1; i < N; i++)
cout << " " << A[i];
return 0;
}

  7-2 寻找大富翁:

输入样例:

8 3
8 12 7 3 20 9 5 18

输出样例:

20 18 12

代码:

#include<bits/stdc++.h>
using namespace std;
int sum[1000000];//根据题目条件创建一个很大的数组
int main()
{
int n, m;
cin>>n>>m;
int i, j;
//int sum[1000000];
int temp;
for(i = 0; i < n; i++)//把输入的财产一次存入数组
{
//cin>>sum[i];
scanf("%d",&sum[i]);
}
for(i=0;i<m;i++)//排序
{
for(j=i;j<n-1;j++)
{
if(sum[j]>sum[j+1])
{
temp = sum[j];
sum[j] = sum[j+1];
sum[j+1] = temp;
}
}
}
if(n>=m)
{
for(i=n-1;i>n-m;i--)//以下输出是为了便于解决空格问题
{
//cout<<sum[i]<<" ";
printf("%d ",sum[i]);
}
printf("%d",sum[n-m]);
}
else
{
for(i=n-1;i>0;i--)//以下输出是为了便于解决空格问题
{
//cout<<sum[i]<<" ";
printf("%d ",sum[i]);
}
printf("%d",sum[0]); }
return 0;
}

  7-3 奥运排行榜:

输入样例:

4 4
51 100 1000
36 110 300
6 14 32
5 18 40
0 1 2 3

输出样例:

1:1 1:2 1:3 1:4

代码:

#include<stdio.h>
#include<string.h>
#include<malloc.h>
struct GuoJia
{
double JP[4];
int Score[4];
}GuoJias[224];
int arr[224];
int Note[224];
void Swap(int i, int j)
{
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
void Init(int N)
{
for (int i = 0; i < N; i++)
{
arr[i] = i;
Note[i] = 0;
}
}
void QSort(int low,int high,int i)
{
if (low >= high - 1)
return;
int mid = (low + high) / 2;
Swap(low, mid);
int k = low + 1;
for (int j = low + 1; j < high; j++)
{
if (GuoJias[arr[j]].JP[i] > GuoJias[arr[low]].JP[i])
Swap(k++, j);
}
Swap(low, k- 1);
QSort(low, k - 1, i);
QSort(k, high, i);
}
void panduan(int N,int i)
{
for (int j = 0; j < N; j++)
{
if (j > 0 && GuoJias[arr[j]].JP[i] == GuoJias[arr[j - 1]].JP[i])
GuoJias[arr[j]].Score[i] = GuoJias[arr[j - 1]].Score[i];
else
GuoJias[arr[j]].Score[i] = j;
}
}
int main()
{
int N, M;
scanf("%d%d", &N, &M);
double num;
for (int i = 0; i < N; i++)
{
scanf("%lf%lf%lf", &GuoJias[i].JP[0], &GuoJias[i].JP[1], &num);
GuoJias[i].JP[2] = GuoJias[i].JP[0] / num;
GuoJias[i].JP[3] = GuoJias[i].JP[1] / num;
}
for (int i = 0; i < 4; i++)
{
Init(N);
QSort(0, N, i);
panduan(N,i);
}
int n;
for (int i = 0; i < M; i++)
{
int minsort = 99999;
int min = 99999;
scanf("%d", &n);
for (int j = 0; j < 4; j++)
{
if (GuoJias[n].Score[j] < minsort)
{
minsort = GuoJias[n].Score[j];
min = j;
}
else if (GuoJias[n].Score[j] == minsort && j < min)
min = j;
}
if(i!=M-1)
printf("%d:%d ", minsort+1, min+1);
else
printf("%d:%d", minsort + 1, min + 1);
}
return 0;
}

  7-4 冒泡法排序:

输入样例:

6 2
2 3 5 1 6 4

输出样例:

2 1 3 4 5 6

代码:

#include<stdio.h>
int main()
{
int n,K;
scanf("%d%d",&n,&K);
int a[n],i=0,j;
while(i<n)
scanf("%d",&a[i++]);
for(i=0;i<K;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
i=0;
while(i<n-1)
printf("%d ",a[i++]);
printf("%d",a[i]);
}

SDUST数据结构 - chap9 排序的更多相关文章

  1. MySql无限分类数据结构--预排序遍历树算法

    MySql无限分类数据结构--预排序遍历树算法 无限分类是我们开发中非常常见的应用,像论坛的的版块,CMS的类别,应用的地方特别多. 我们最常见最简单的方法就是在MySql里ID ,parentID, ...

  2. Java实现:数据结构之排序

    Java实现:数据结构之排序 0.概述 形式化定义:假设有n个记录的序列(待排序列)为{ R1, R2 , -, Rn },其相应的关键字序列为 { K1, K2, -, Kn }.找到{1,2, - ...

  3. Java中的数据结构及排序算法

    (明天补充) 主要是3种接口:List Set Map List:ArrayList,LinkedList:顺序表ArrayList,链表LinkedList,堆栈和队列可以使用LinkedList模 ...

  4. 数据结构 - 希尔排序(Shell&#39;s Sort) 具体解释 及 代码(C++)

    数据结构 - 希尔排序(Shell's Sort) 具体解释 及 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/2 ...

  5. Java数据结构与排序

    一.引子:想要给ArrayList排序却发现没有排序方法?你有两种选择:        1.换用TreeSet:     2.使用Collection.sort(List<T> list) ...

  6. 【Java】 大话数据结构(14) 排序算法(1) (冒泡排序及其优化)

    本文根据<大话数据结构>一书,实现了Java版的冒泡排序. 更多:数据结构与算法合集 基本概念 基本思想:将相邻的元素两两比较,根据大小关系交换位置,直到完成排序. 对n个数组成的无序数列 ...

  7. 【Java】 大话数据结构(15) 排序算法(2) (快速排序及其优化)

    本文根据<大话数据结构>一书,实现了Java版的快速排序. 更多:数据结构与算法合集 基本概念 基本思想:在每轮排序中,选取一个基准元素,其他元素中比基准元素小的排到数列的一边,大的排到数 ...

  8. 【Java】 大话数据结构(16) 排序算法(3) (堆排序)

    本文根据<大话数据结构>一书,实现了Java版的堆排序. 更多:数据结构与算法合集 基本概念 堆排序种的堆指的是数据结构中的堆,而不是内存模型中的堆. 堆:可以看成一棵完全二叉树,每个结点 ...

  9. 【Java】 大话数据结构(17) 排序算法(4) (归并排序)

    本文根据<大话数据结构>一书,实现了Java版的归并排序. 更多:数据结构与算法合集 基本概念 归并排序:将n个记录的序列看出n个有序的子序列,每个子序列长度为1,然后不断两两排序归并,直 ...

随机推荐

  1. mysql 8.0 改变数据目录和日志目录(二)

    一.背景 原数据库数据目录:/data/mysql3306/data,日志文件目录:/data/mysql3306/binlog 变更后数据库目录:/mysqldata/3306/data,日志文件目 ...

  2. Mybatis执行流程源码分析

    第一部分:项目结构 user_info表:只有id和username两个字段 User实体类: public class User { private String username; private ...

  3. 浏览器开发者工具network详解

    General概诉 请求链接 Request URL: 请求方式 Request Method: 代码状态 Status Code: 远程地址 Remote Address: 引用协议 用于过滤 Re ...

  4. ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件

    前言 随着Asp .Net Core的升级迭代,很多开发者都逐渐倾向于.net core开发. .net core是一个跨平台的应用程序,可以在windows.Linux.macOS系统上进行开发和部 ...

  5. JVM虚拟机(一):类加载机制

    类加载的时机   类加载的生命周期为: 加载.验证.准备.解析.初始化.使用.卸载七个阶段,其中验证.准备.解析三个阶段统称为连接.其中加载与连接时交叉执行的. 类必须初始化的六种情况 遇到new.g ...

  6. springmvc中使用文件下载功能

    项目代码:https://github.com/PeiranZhang/springmvc-fileupload 使用文件下载步骤 对请求处理方法使用void或null作为返回类型,并在方法中添加Ht ...

  7. [日常摸鱼]Vijos1083小白逛公园-线段树

    题意:单点修改,询问区间最大子段和,$n\leq 5e5$ 考虑分治的方法$O(nlogn)$求一次最大子段和的做法,我们是根据中点分成左右两个区间,那么整个区间的答案要么是左边答案,要么是右边答案, ...

  8. 百度实习生,以修仙者的角度聊聊怎么学MySQL,不来看看你的修为如何吗?

    目录 因为我个人比较喜欢看修仙类的小说,所以本文的主体部分借用修仙者的修为等级,将学习旅程划分成:练气.筑基.结丹.元婴.化神.飞升六个段位,你可以看下你大概在哪个段位上哦! 本文目录: 我为什么要写 ...

  9. 用Python实现童年小游戏贪吃蛇

    贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中.

  10. Python之word文档替换字符串(也可以用于短模板套用)

    Python之word文档替换字符串(也可以用于短模板套用),代码如下: 1 ''' 2 #word模板套用1:创建模板,适合比较短的文档 3 ''' 4 5 #导入所需库 6 from docx i ...