.top和网站,国贸附近网站建设,个人网站备案信息,html5网站有哪些我来啦#xff01;今天依旧是1177#xff1a;奇数单增序列的一题多解。
#xff08;不厌其烦地附上题目#xff09;
【题目描述】 给定一个长度为N#xff08;不大于500#xff09;的正整数序列#xff0c;请将其中的所有奇数取出#xff0c;并按升序输出。 【输入】…我来啦今天依旧是1177奇数单增序列的一题多解。不厌其烦地附上题目【题目描述】给定一个长度为N不大于500的正整数序列请将其中的所有奇数取出并按升序输出。【输入】第1行为 N第2行为 N 个正整数其间用空格间隔。【输出】增序输出的奇数序列数据之间以逗号间隔。数据保证至少有一个奇数。【输入样例】10 1 3 2 6 5 4 9 8 7 10【输出样例】1,3,5,7,9方法四冒泡排序我在大佬源代码的基础上将q[j]与q[j1]的复制与赋值换成了swap函数嘻嘻我会a little bit举一反三了这个flag是用来判断当前数组是否已经有序的其实没有flag也不影响理解哒#include iostream #include algorithm using namespace std ; void bubblesort(int q[] , int n){ for(int i 0 ; i n - 1 ; i ){ bool flag true ; //用一个flag来判断当前数组是否已经有序有序则推退出循环 for(int j 0 ; j n - 1 ; j ){ if(q[j] q[j1]){ swap(q[j] , q[j1]) ; flag false ; } } if(flag) break ; } } int main(){ int n , len , k 0 ; cin n ; len n ; int* a new int[n] ; while(n --) scanf(%d , a[k]) ; bubblesort(a , len) ; int first 1 ; for(int i 0 ; i len ; i ){ if(a[i] % 2 1){ if(first 1){ first 0 ; printf(%d, a[i]) ; continue ; } else printf(,%d , a[i]) ; } } return 0 ; }方法五希尔排序看了希尔排序的动画后就觉得这玩意儿 和插入排序怎么那么像看到它的模板代码后发现这俩真的超级像希尔排序比插入排序多的一个地方是增量gap。希尔排序每次都选择gap/2作为它的步长初始的gap为n/2根据这个步长分组进行排序使得每次排序的工作量都比较小。#include iostream #include algorithm using namespace std ; void shellsort(int q[] , int n){ for(int gap n/2 ; gap 1 ; gap/2){ for(int i gap ; i n ; i gap){ int temp q[i] ; int pre i - gap ; while(pre 0 q[pre] temp){ q[pregap] q[pre]; pre - gap ; } q[pre gap] temp ; } } } int main(){ int n , len , k 0 ; cin n ; len n ; int* a new int[n] ; while(n --) scanf(%d , a[k]) ; shellsort(a , len) ; int first 1 ; for(int i 0 ; i len ; i ){ if(a[i] % 2 1){ if(first 1){ first 0 ; printf(%d, a[i]) ; continue ; } else printf(,%d , a[i]) ; } } return 0 ; }方法五选择排序#include iostream #include algorithm using namespace std ; void selectionsort(int q[] , int n){ for(int i 0 ; i n ; i ){ int min i ; for(int j i1 ; j n ; j ){ if(q[j] q[min]) min j ; } int temp q[min] ; q[min] q[i] ; q[i] temp ; } } int main(){ int n , len , k 0 ; cin n ; len n ; int* a new int[n] ; while(n --) scanf(%d , a[k]) ; selectionsort(a , len) ; int first 1 ; for(int i 0 ; i len ; i ){ if(a[i] % 2 1){ if(first 1){ first 0 ; printf(%d, a[i]) ; continue ; } else printf(,%d , a[i]) ; } } return 0 ; }