ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[NEFU锐格 数据结构]实验八 排序表有关的操作

2021-11-03 22:04:04  阅读:184  来源: 互联网

标签:arr include int 锐格 gap NEFU ++ while 数据结构


[NEFU锐格 数据结构]实验八 排序表有关的操作

正经人谁手写排序啊,无脑sort冲冲冲。
如果阶段考上机排序,sort直接乱杀,可惜排不得。
推荐阅读:[数据结构]NEFU 大二上 锐格实验参考 目录

扯犊子Time

锐格 数据结构系列应该就此完结了,排序算法大家基本都学过,所以来波闲谈,如果单纯看答案就直接跳过吧,或许会影响你一天的心情awa。

关于提问:
问东西之前,自己去搜索引擎搜过,尝试过自己的解决方案是基本要求吧。搜一下就有的东西,再来麻烦别人,这不是浪费别人时间吗。如果你没有付出过努力就来麻烦别人,那么我会考虑下面两种情况:你是一个懒狗或者你的重点在交流而不在于解决问题。

我个人对于这些情况的解决方案取决于:我的时间,我的心情,以及对方在我心中的权重。
如果我不认识你,你还问了个很憨憨的问题,那我大概会无视你吧。

关于称呼:
个人不太喜欢别人给我加什么称呼,不管你是赞美还是拿我打趣。我本来就没有什么特别深的人际关系,无聊的称呼只会加深你我的隔阂,让我倍感孤独。熟人无需称呼直接说事,生人同学相称即可。

关于阶段考:
如果你有自己规划和准备,那这可能是你的阻碍,应付应付就完事了。(冲保研的同学除外)
如果你没有自己规划,那阶段考帮你兜底的,没了这兜底可能会变得很烂吧,安安心心学就万事了。

题目

8550

堆排序,懒得手写堆了,直接C++ STL的priority_queue优先队列,可以认为他是堆,字面意思就是有顺序的队列嘛,肯定排过顺序

#include<iostream>
#include<queue>
#include<vector>
using namespace std;

int main(){
    priority_queue<int,vector<int>,greater<int>>heap;
    int x;while(cin>>x&&x)heap.push(x);
    while(!heap.empty()){cout<<heap.top()<<" ",heap.pop();}
    return 0;
}

8549

经典快排,找工作挺有用的,建议不会也给背下来

#include<algorithm>
#include<cstdio>

using namespace std;

const int N=1e5+5;
int q[N];
void quick_sort(int q[],int l,int r)
{
    if(l>=r)return;
    int i=l-1,j=r+1,x=q[l+r+1>>1];
    while(i<j)
    {
        do i++;while(q[i]<x);
        do j--;while(q[j]>x);
        if(i<j)swap(q[i],q[j]);
    }
    quick_sort(q,l,i - 1),quick_sort(q,i,r);
}

int main()
{
    int n=0,x;
    while(~scanf("%d",&x)&&x)q[++n]=x;
    quick_sort(q,1,n);
    for(int i=1;i<=n;i++)printf("%d ",q[i]);
}

8548

简单选择排序

#include <stdio.h>
void Sort(int a[],int n){
    for(int i=0; i<n-1; i++){
        int min_index = i; 
        for(int j=i+1; j<n; j++)
            if(a[j] < a[min_index])
                min_index = j;
        
        if( i != min_index){
            int temp = a[i];
            a[i] = a[min_index];
            a[min_index] = temp;
        }
    }
}

int A[105];
int n,x;
int main() {
	while(~scanf("%d",&x)&&x)A[n++]=x;
	Sort(A,n);
	for(int i=0;i<n;i++)printf("%d ",A[i]);
	return 0;
}

8547

希尔排序,优化的插入排序嘛

#include <stdio.h>
void Sort(int a[], int len){
    int i, j, k, tmp, gap;  // gap 为步长
    for (gap = len / 2; gap > 0; gap /= 2) {  // 步长初始化为数组长度的一半,每次遍历后步长减半,
    	for (i = 0; i < gap; ++i) { // 变量 i 为每次分组的第一个元素下标 
	        for (j = i + gap; j < len; j += gap) { //对步长为gap的元素进行直插排序,当gap为1时,就是直插排序
	            tmp = a[j];  // 备份a[j]的值
	            k = j - gap;  // j初始化为i的前一个元素(与i相差gap长度)
	            while (k >= 0 && a[k] > tmp) {
	                a[k + gap] = a[k]; // 将在a[i]前且比tmp的值大的元素向后移动一位
	                k -= gap;
	            }
	            a[k + gap] = tmp; 
	        }
	    }
    }
}


int A[105];
int n,x;
int main() {
	while(~scanf("%d",&x)&&x)A[n++]=x;
	Sort(A,n);
	for(int i=0;i<n;i++)printf("%d ",A[i]);
	return 0;
}

8546

冒泡排序

#include <stdio.h>
void Sort(int arr[], int n) {
    int temp;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n - i - 1; ++j) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
int A[105];
int n,x;
int main() {
	while(~scanf("%d",&x)&&x)A[n++]=x;
	Sort(A,n);
	for(int i=0;i<n;i++)printf("%d ",A[i]);
	return 0;
}

8545

直接插入排序

#include <stdio.h>
int InsertSort(int A[], int n) {
	for(int i=2; i<=n; i++) { 
		A[0]=A[i];
        int j; 
		for(j=i-1; A[0]<A[j]; j--)A[j+1]=A[j];
		A[j+1]=A[0];
	}
	return 0;
}
int A[105];
int n,x;
int main() {
	while(~scanf("%d",&x)&&x)A[++n]=x;
	InsertSort(A,n);
	for(int i=1;i<=n;i++)printf("%d ",A[i]);
	return 0;
}

标签:arr,include,int,锐格,gap,NEFU,++,while,数据结构
来源: https://blog.csdn.net/qq_39354847/article/details/121130704

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有