zl程序教程

您现在的位置是:首页 >  工具

当前栏目

ACM学习<3>

学习 gt lt ACM
2023-09-14 08:57:54 时间
          1.对数组中的各数据,依次比较相邻两个元素的大小。           2.如果前面的大,交换。经过一轮,可把最小的排好。           3.然后用同样的方法,把剩下的数据排好。最后从小到大排好相应的数据。
#include iostream 

#include time.h 

#define SIZE 10

using namespace std;

void BubbleSort(int *a,int len)

 int temp;

 for(int i=0;i len-1;i++)

 for(int j=len-1;j j--)

 if(a[j-1] a[j])

 temp=a[j];

 a[j]=a[j-1];

 a[j-1]=temp; 

 cout i ":";

 for(int k=0;k k++)

 cout a[k] " ";

 cout endl; 

int main()

 int shuzu[SIZE];

 srand(time(NULL));//随机种子

 for(int i=0;i SIZE;i++)

 shuzu[i]=rand()/1000+100; 

 cout "old:";

 for(int i=0;i SIZE;i++)

 cout shuzu[i] " ";

 cout endl;

 BubbleSort(shuzu,SIZE);

 cout "now:";

 for(int i=0;i SIZE;i++)

 cout shuzu[i] " ";

 cout endl;

}
选择排序:            思路:在每一步选取最小的来重新排列。      流程:           1.首先从原始数据中选中最小的一个,和位于第一个位置的数据交换、           2.接着从剩下的n-1数据中选择次小的,与第二个位子交换。           3.这样重复,数组从小到大排列。
#include iostream 

#include time.h 

using namespace std;

#define SIZE 10

void SelectionSort(int *a,int len)

 int temp,k;

 for(int i=0;i len-1;i++)

 k=i;

 for(int j=i+1;j len-1;j++)

 if(a[j] a[k])

 k=j;

 if(k!=i)//交换

 temp=a[k];

 a[k]=a[i];

 a[i]=temp;

int main()

 int shuzu[SIZE];

 srand(time(NULL));

 for(int i=0;i SIZE;i++)

 shuzu[i]=rand()/1000+100;

 cout "old:";

 for(int i=0;i SIZE;i++)

 cout shuzu[i] " ";

 cout endl;

 SelectionSort(shuzu,SIZE);

 cout "now:";

 for(int i=0;i SIZE;i++)

 cout shuzu[i] " ";

 cout endl;

}
插入排序:      思路:通过未排序的数据逐个插入合适的位置来完成工作。      流程:           1.首先对数组的前两个数据进行从小到大排序           2.接着第3个数据插入合适的位子           3.第4个           4.重复  
#include iostream 

#include time.h 

#define SIZE 10

using namespace std;

void InsertionSort(int *a,int len)

 int temp,j,i,k;

 for(i=1;i i++)

 //temp=a[i],a[j+1]=a[j];a[j+1]=temp;就是个交换。 判断 j-- 为逻辑

 temp=a[i],

 j=i-1;

 while(j =0 temp a[j])

 a[j+1]=a[j];

 j--;

 a[j+1]=temp;

int main()

 int arr[SIZE];

 srand(time(NULL));

 for(int i=0;i SIZE;i++)

 arr[i]=rand()/1000+100;

 cout "old:";

 for(int j=0;j SIZE;j++)

 cout arr[j] " ";

 cout endl;

 InsertionSort(arr,SIZE);

 cout "now:";

 for(int k=0;k SIZE;k++)

 cout arr[k] " ";

 cout endl;

}
    Shell排序:(希尔排序,缩小增量排序)      流程           1.将有n个元素的数组,分成n/2个数字序列。第一个数据和第n/2+1成一对、。。。           2.一次循环是每个序列对排好顺序           3。然后,在变为n/4           4.不断重复。
#include iostream 

#include time.h 

using namespace std;

#define SIZE 10

void ShellSrot(int *a,int len)

 int i,j;

 int r,temp;

 for(r=len/2;r r/=2)

 for(i=r;i i++)

 temp=a[i];

 j=i-r;

 while(j =0 temp a[j])

 a[j+r]=a[j];

 j-=r;

 a[j+r]=temp; 

int main()

 int arr[SIZE];

 srand(time(NULL));

 for(int i=0;i SIZE;i++)

 arr[i]=rand()/1000+100;

 cout "old:";

 for(int j=0;j SIZE;j++)

 cout arr[j] " ";

 cout endl;

 ShellSrot(arr,SIZE);

 cout "now:";

 for(int k=0;k SIZE;k++)

 cout arr[k] " ";

 cout endl;

}

大学生竞赛指南 ACM/ICPC ICPC赛事由各大洲区域赛(Regional)和全球总决赛(WorldFinal)两个主要阶段组成。根据各赛区规则,每站前若干名的学校获得参加全球总决赛的资格,决赛安排在每年的4-6月举行,而区域赛一般安排在上一年的9-12月举行。一个大学可以有多支队伍参加区域预赛,但只能有一支队伍参加全球总决赛。
All Of ACM 数据结构和算法专栏,我会什么写什么  = = 不定时更新 一、数据结构 树状数组详解 线段树详解 KMP算法 我的代码模板 大整数模板
独家对话AAAI、ACM、ACL三会会士Raymond J. Mooney | 香侬专栏 德克萨斯大学奥斯汀分校计算机系教授、人工智能实验室主任 Raymond J. Mooney 带领他的人工智能小组研究了多个领域,目前他的主要研究方向是自然语言处理和计算语言学。其本人曾在 2008-2011 年间担任国际机器学习协会(ICML 主办方)主席,曾多次担任 ICML、ACL、AAAI、EMNLP、NAACL 等会议主席或领域主席,现在为美国计算机学会(ACM)、国际人工智能学会 (AAAI)、国际计算语言学会(ACL)三会会士 。
二哥聊RPA 公号「二哥聊RPA」。关注我,一起洞察 RPA ◎ RPA创业者 ◎ 现明堂红木商业顾问,为十月结晶、可啦啦、鑫蜂维等多家企业提供 RPA 咨询服务 ◎ 希望帮助大家在 RPA 上做一些力所能及的事情