数据结构(C语言)--PTA查找和排序练习题

简单的做了些题

5-1 排序算法

本题要求完成三种常用排序算法。

输入10个需要排序的序列,用空格隔开以-1结束。输入样例为:

8 9 7 5 3 1 2 4 6 10 -1

输出样例为:

直接插入排序:  1  2  3  4  5  6  7  8  9 10
冒泡排序:  1  2  3  4  5  6  7  8  9 10
简单选择排序:  1  2  3  4  5  6  7  8  9 10
//直接插入排序
void InsertSort(RecordType r[], int length){

    for (int i = 2; i <= length; i++) {
        if(r[i].key < r[i-1].key) {
            r[0] = r[i];    //2 分
            r[i] = r[i-1];//2 分
            int j=i-2;
            for(;r[0].key<r[j].key;j--)
                r[j+1]=r[j];
            r[j + 1] = r[0];//2 分
   } }
    Print(r,length);}

//冒泡排序
void BubbleSort(RecordType r[], int length){
    for (int i = 1; i <= length; i++)  {
        for (int j = 1; j <= length - i; j++)  {
            if (r[j].key > r[j + 1].key)  {
                r[0] = r[j+1];//2 分
                r[j + 1] = r[j];//2 分
                r[j] = r[0];//2 分  
}  } }
    Print(r,length);}

//简单选择排序
void SelectSort(RecordType r[], int length){
    for (int i = 1; i <= length - 1; i++)  {
        int k = i;
        for (int j = i + 1; j <= length; j++)  {
            if (r[j].key < r[k].key)  {
                k = j; } }
        if (k != i)  {
            r[0] = r[i];//2 分
            r[i] = r[k];//2 分
            r[k] = r[0];//2 分   
} }
    Print(r,length);}

6-1 快速排序

本题要求实现快速排序的一趟划分函数,待排序列的长度1<=n<=1000。

函数接口定义:

int Partition ( SqList L, int low, int high );

其中L是待排序表,使排序后的数据从小到大排列。
###类型定义:

typedef int KeyType;
typedef struct
{ 
   KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/ 
   int Length; 
}SqList;

裁判测试程序样例:

#include<stdio.h> 
#include<stdlib.h> 
typedef int KeyType; 
typedef struct 
{
   KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/ 
   int Length;
}SqList; 
void CreatSqList(SqList *L);/*待排序列建立,由裁判实现,细节不表*/ 
int Partition ( SqList L,int low, int high ); 
void Qsort ( SqList L,int low, int high ); 
int main() { 
    SqList L; 
    int i; 
    CreatSqList(&L); 
    Qsort(L,1,L.Length); 
    for(i=1;i<=L.Length;i++)
      printf("%d ",L.elem[i]);
    return 0;
} 
void Qsort ( SqList L,int low, int high ) 
{ 
   int pivotloc;
   if(low<high) { 
     pivotloc = Partition(L, low, high ) ;
     Qsort (L, low, pivotloc-1) ;
     Qsort (L, pivotloc+1, high ); 
   }
 } /*你的代码将被嵌在这里 */

输入样例:

第一行整数表示参与排序的关键字个数。第二行是关键字值 例如:

10
5 2 4 1 8 9 10 12 3 6

输出样例:

输出由小到大的有序序列,每一个关键字之间由空格隔开,最后一个关键字后有一个空格。

1 2 3 4 5 6 8 9 10 12 
int Partition ( SqList  L,int low,  int  high ){
	L.elem[0]=L.elem[low];
	int pivotkey=L.elem[0];
	while(low<high){
		while(low<high&&L.elem[high]>=pivotkey) high--;
		L.elem[low]=L.elem[high];
		while(low<high&&L.elem[low]<=pivotkey) low++;
		L.elem[high]=L.elem[low];
	}
	L.elem[low]=L.elem[0];
	return low;
} 

7-1 二分查找

对于输入的n个整数,先进行升序排序,然后进行二分查找。

输入格式:

测试数据有多组,处理到文件尾。每组测试数据第一行输入一个整数n(1≤n≤100),第二行输入n个各不相同的待排序的整数,第三行是查询次数m(1≤m≤100),第四行输入m个待查找的整数。

输出格式:

对于每组测试,分2行输出,第一行是排序后的升序的结果,每两个数据之间留一个空格;第二行是查找的结果,若找到则输出排序后元素的位置(从1开始,每两个数据之间留一个空格),否则输出0。

输入样例:

9
4 7 2 1 8 5 9 3 6
5
10 9 8 7 -1

输出样例:

1 2 3 4 5 6 7 8 9
0 9 8 7 0
#include<bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int n,m;
    while(~scanf("%d",&n))
    {
        int a[110];
        map<int,int>mp;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        sort(a+1,a+n+1);
        for(int i=1;i<=n;i++)
        {
            mp[a[i]]=i;
            if(i!=1) cout<<' ';
            cout<<a[i];
        }
        printf("\n");
        scanf("%d",&m);
        int x,f=0;
        for(int i=0;i<m;i++)
        {
            scanf("%d",&x);
            if(mp[x]>=1&&mp[x]<=n)
            {
                if(f++) printf(" ");
                printf("%d",mp[x]);
            }
            else
            {
                if(f++) printf(" ");
                printf("0");
            }
        }
        printf("\n");
    }
    return 0;
}

7-2 冒泡排序

冒泡排序,将一个列表中的两个元素进行比较,并将最小的元素交换到顶部。两个元素中较小的会冒到顶部,而较大的会沉到底部,该过程将被重复执行,直到所有元素都被排序。

输入格式:

输入在第1行中给出N(1<N≤100),在第2行中给出N个待排序的整数,数字间以空格分隔,并保证数字没有重复的出现。

输出格式:

给出冒泡排序每一遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。注意:当排序完成时应立即停止

输入样例1:

7
4 5 7 6 3 2 1

输出样例1:

4 5 6 3 2 1 7
4 5 3 2 1 6 7
4 3 2 1 5 6 7
3 2 1 4 5 6 7
2 1 3 4 5 6 7
1 2 3 4 5 6 7

输入样例2:

6
1 2 3 6 5 4

输出样例2:

1 2 3 5 4 6
1 2 3 4 5 6

 

#include<stdio.h>
int main ()
{
	int a[10],n,i,j,temp,x,cnt;
	bool flag=false; 
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	for(i=0;i<n-1;i++){
		for(j=0;j<n-i-1;j++){
			if(a[j]>a[j+1]){
				flag=true;
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;		
			}
		}
		if(!flag){
			break;
		}else{
		flag=false;
		for(x=0;x<n;x++){
		if(x<n-1){
		printf("%d ",a[x]);	
		}else{
		printf("%d\n",a[x]);
		}
		}
	    }			
	}
		
	
}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集
PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集等 PTA浙大版《数据结构(第2版)》题目集

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值