C语言(二十五)

news/2024/11/7 7:39:37/

1、冒泡排序
数组存储:
输入:输入长度为N的整型数组arr
输出:输出arr冒泡排序后的升序序列
优化目标:提高效率

#include <stdio.h>
void BubbleSort(int arr[],int len){int i,j;for(i=0;i<len-1;i++){//一共n-1轮	int flag=0; for(j=n-1;j>i;j--){		if(arr[j-1]>arr[j]){	//前一个比后一个大int temp;temp=arr[j-1];arr[j-1]=arr[j];arr[j]=temp;	//交换两个数据flag=1;}	}if(flag==0){break;//若本轮没发生交换,说明已经有序}}}
int main(){int N,arr[100]={0};scanf("%d",&N);for(int i=0;i<N;i++){scanf("%d", &arr[i]);}BubbleSort(arr,N);for(int j=0; j<N; j++) {printf("%d ",arr[j]);}}

链表存储:
输入:输入多个整型数创造链表L
输出:输出L冒泡排序后的升序序列
优化目标:提高效率

#include <stdio.h>
#include <stdlib.h>
struct ListNode {int data;struct ListNode *next;
};void BubbleSort(struct ListNode *L)
{int flag;struct ListNode *count=L;struct ListNode *tail=NULL;while(tail!=L){struct ListNode *cur=L;flag=0;for(;cur->next!=tail;cur=cur->next){//cur每轮最终位置在tail之前if(cur->data>cur->next-> data){flag=1;int temp;temp=cur->data;cur->data=cur->next->data;cur->next->data=temp;	//交换}}tail=cur;//tail往前if (flag==0)//若没发生交换,则排序完成{return;}}}struct ListNode* readlist()//创建链表
{struct ListNode *head=NULL,*tail=NULL,*p=NULL;int data;scanf("%d", &data);while (data!=-1){p=(struct ListNode*)malloc(sizeof(struct ListNode));p->data=data;p->next=NULL;if (head==NULL)head=p;elsetail->next=p;tail=p;scanf("%d", &data);}return head;
}void printlist(struct ListNode *L )//打印链表
{struct ListNode *p=L;while (p) {printf("%d ", p->data);p=p->next;}printf("\n");
}int main()
{int m;struct ListNode *L=readlist();printlist(L);BubbleSort(L);printlist(L);return 0;
}

2、简单选择排序
数组存储:
输入:输入长度为N的整型数组arr
输出:输出arr选择排序后的升序序列
优化目标:无

#include <stdio.h>
void SelectSort(int arr[],int len){int i,j;for(i=0;i<len-1;i++){//一共n-1趟int min=i;		//初始化for(j=i+1;j<len;j++){if(arr[min]>arr[j]){	//找到最小值的下标min=j;	}	}if(min!=i){	int temp;temp=arr[min];arr[min]=arr[i];arr[i]=temp;	//交换两个数据}}
int main(){int N,arr[100]={0};scanf("%d",&N);for(int i=0;i<N;i++){scanf("%d", &arr[i]);}SelectSort(arr,N);for(int j=0; j<N; j++) {printf("%d ",arr[j]);}}

链表存储:
输入:输入多个整型数创造链表L
输出:输出L选择排序后的升序序列
优化目标:无

#include <stdio.h>
#include <stdlib.h>
struct ListNode {int data;struct ListNode *next;
};void selectsort(struct ListNode *L)
{struct ListNode *i=L;struct ListNode *min,*j;int temp;for(;i->next!=NULL;i=i->next){//依次遍历,直到倒数第二个结点min=i;//记录当前结点for(j=i->next;j!=NULL;j=j->next){//找到本次最小值结点if(min->data>j->data){min=j;//有更小的则更新指针}}if(min!=i){temp=min->data;min->data=i->data;i->data=temp;}}
}
struct ListNode* readlist()//创建链表
{struct ListNode *head=NULL,*tail=NULL,*p=NULL;int data;scanf("%d", &data);while (data!=-1){p=(struct ListNode*)malloc(sizeof(struct ListNode));p->data=data;p->next=NULL;if (head==NULL)head=p;elsetail->next=p;tail=p;scanf("%d", &data);}return head;
}
void printlist(struct ListNode *L )//打印链表
{struct ListNode *p=L;while (p) {printf("%d ", p->data);p=p->next;}printf("\n");
}
int main()
{int m;struct ListNode *L=readlist();printlist(L);selectsort(L);printlist(L);return 0;
}

总结:今天复习了冒泡排序和简单选择排序在数组上和链表上的操作,加深了印象。


http://www.ppmy.cn/news/698590.html

相关文章

Python超实用小技巧:统计某列的所有值的出现次数

应用场景&#xff1a;我们想要获取某列数据都有哪些取值&#xff1f;每种取值的数量是怎样的&#xff1f; 例如&#xff0c;我们想要获取【房间号】这一列的数据&#xff0c;一共有几个房间号&#xff1f;每个房间号出现了几次&#xff1f; 代码 print(train["Cabin"…

交换机与路由器技术-37-端口安全

目录 一、端口安全 1.1 课程引入 1.2 基本概念 1.3 作用 1.4交换机端口安全配置 1.4.1 配置最大活跃地址数量 1.4.2 配置静态MAC地址和接口绑定 1.4.3配置接口老化时间 1.4.4 配置MAC地址违规后的操作 1.5 当端口进入err-disable状态时&#xff0c;恢复接口状态的方法…

matlab 根据顶点坐标绘制三维立方体(当部分边有权值时)

matlab 根据顶点坐标绘制三维立方体棱线&#xff08;当部分边有权值时,有更多的边时方法是类似的&#xff09; a25load(‘xx0.25’);%顶点x坐标&#xff0c;大立方体外表面棱边权值为0.25的边的两顶点x坐标&#xff0c;第一列为边的第一个顶点坐标&#xff0c;第二列 %为该边的…

2021年第十二届C/C++ B组蓝桥杯省赛真题

2021年第十二届C/C B组蓝桥杯省赛真题 真题第一题&#xff1a;空间第二题&#xff1a;卡片第三题&#xff1a;直线第四题&#xff1a;货物摆放第五题&#xff1a;路径第六题&#xff1a;时间显示第七题&#xff1a;砝码称重第八题&#xff1a;杨辉三角形第九题&#xff1a;双向…

小型断路器A、B、C、D型脱扣特性的区别

断路器通用的脱扣特性有A、B、C、D四种。那么我们该如何选择呢&#xff1f; D型断路器&#xff1a;10-20倍额定电流&#xff0c;主要在用电器瞬时电流较大的环境&#xff0c;一般家庭也比较少用&#xff0c;适用于高感负载和较大冲击电流的系统&#xff0c;常用于保护具有很高…

c25

编写一个程序&#xff0c;将字符串str1复制到字符串str2中&#xff08;不能使用strcpy函数&#xff09;。 #include<stdio.h> #include<string.h> int main() {char str1[50], str2[50];int i, length;printf("请输入&#xff1a;\n") gets (str1);leng…

FPGA交通灯 Verilog Modelsim

一、设计要求 东西方向和南北方向各有 红黄绿三盏灯 其中红灯30秒 黄灯5秒 绿灯25秒 二、设计代码 traffic_led.v module traffic_led(rst_n,clk,r1,g1,y1,r2,g2,y2);//c5,c25,c30ˆ†ˆ˜‰š—™š„“‡ ‡—,enˆ†ˆ˜‰š—™š„ƒinput rst_n,clk;wire c5,c25,c30…

RC522读M1卡原理图及调试

原理图及代码网上有蛮多&#xff0c;找来用的图如下&#xff1a; 做板时天线线宽15mil&#xff0c;线圈做了4圈&#xff0c;尺寸30mmx50mm&#xff0c;如下&#xff0c;读卡芯片及电路都放在主板上&#xff0c;天线板与主板连接线长6cm&#xff0c;FPC扁平线。 做好后测试&am…