重新排版和整理以前由公共帐户发布的文章,以便将来查看和方便大家浏览和收集。冒泡排序假定包含n个数字的序列要按升序排列。
气泡排序算法的步骤是:1.从存储序列的数组的第一个元素到最后一个元素,依次比较两个相邻的数字,如果前者较大而后者较小,则交换两个位置数字; 2.在第一次遍历之后,将最大数存储在数组的最后一个元素中,然后从第一个元素到倒数第二个元素,依次比较两个相邻的数字,如果前者较大而后者较小,则交换两个数字的位置; 3.重复第1步n-1次,然后将每遍通过的次数与上一次相比进行一次比较,以完成要求。示例1.在100中随机生成10个数字,使用冒泡方法将它们按升序排列,然后输出它们。
编程思想:使用最后一个数字与前一个数字进行比较,如果它小于前一个数字,则交换位置,然后与前一个数字进行比较,如果它小于前一个数字,则交换位置,知道它是比以前的数字大或已经在最前面!以这种方式重复8次以安排订单! #include& lt; stdio.h& gt; #include& lt; stdlib.h& gt; #define n 10 int main(void){int a [n],i,j,t; printf(“在100内随机生成10个数字: ”); for(i = 0; i& lt; n; i ++){a [i] = rand()%100; printf(“%d ",a [i]);} printf("输出: ”); for(j = 1; j< = n-1; j ++){/ * n处理次数n-1次* / for(i = 0; i& lt = n-1-j; i ++){ / *每个行程都比前一个行程进行一次比较* / if(a [i]> a [i + 1]){t = a [i]; a [i] = a [i + 1]; a [i +1] = t;}}} for(i = 0; i& lt; n ++)+ {printf(“%d ",a [i]);}返回0;}操作结果:选择排序选择方法排序是一种相对容易理解的排序算法。假设将包含n个数字的序列以升序排序,则算法步骤为:1.从数组中查找存储的n个数字中最小数字的下标(请参阅算法的“查找最佳值”) ),然后将最小的数字换成第一个数字; 2.除第一个数字外,从其余的n开始查找-1个数字中最小的数字(n个数字的第二个小数)的下标,并将该数字与第二个数字交换; 3.重复步骤1 n-1次以完成搜索。
代码案例实现:#include& lt; stdio.h& gt; #include& lt; stdlib.h& gt; #define n 10int main(){int a [n],i,j,k,t; printf(”在以下范围内随机生成10100个数字: ”); for(i = 0; i& lt; n; i ++){a [i] = rand()%100; printf(“%d ",a [i]);} printf("输出: ”); for(i = 0; i< n-1; i ++)/ *进程n-1通过* / {k = i; Number)是最小的,k记录其下标* / for(j = i + 1; j< n; j ++){if(a [j]& lt; a [k])k = j;}如果(k!= i){t = a [i]; a [i] = a [k]; a [k] = t;}} for(i = 0; i& lt; n; i ++)printf(“%d ",a [i]); return 0;}运行结果:在100内随机生成10个数字,排序后输出。插入排序。
插入排序方法的要点是将每个数字立即插入到最终数组中。每次插入都会使数组井然有序。
代码示例:#include& lt; stdio.h& gt; #include& lt; stdlib.h& gt; #define n 10 int main(){int a [n] = {-1,3,6,9,13,22,27,32,49}; / *注意留出要插入的数字的空间* / int x,j,k; x = rand()%100; printf(“随机生成x的值:%d ",x); if(x> a [n-2]){a [n-1] = x; / *如果它大于最后一个数字,则将其存储在最后一个元素中* /}否则/ *查找要插入的位置* / {j = 0; while(j& lt; = n-2& amp; amp;> a [j]){j ++;} for(k = n-2; k& gt = j; k--) {/ *从最后一个数字到要插入的位置的数字,依次移回一位* / a [k + 1] = a [k];} a [j] = x; / *插入要插入的号码* /} printf(“输出: ”); for(j = 0; j& lt; = n-1; j ++)printf(“%d”,a [j]); return 0;}运行结果:随机生成一个数字,并将其插入到现有数组中,排序后输出:merge sort是将两个以升序(或降序)排列的数据序列合并为一个仍在数组中排列的数据序列。原始订单。
代码示例:#include& lt; stdio.h& gt; #include& lt; stdlib.h& gt; #define m 6 #define n 4 int main(){int a [m] = {-3,6,19,26,68,100},b [n] = {8,10,12,22}; int i,j,k,c [m + n];国际i = j = k = 0; printf(“数组的元素: ”); for(l = 0; l& lt; m; l ++){printf(“%d”,a [l]);} printf(“ b数组的元素: ”); for(l = 0; l& lt; n; l ++){printf(“%d”,b [l]);} printf(“ 合并数组元素: ”);尽管。
气泡排序算法的步骤是:1.从存储序列的数组的第一个元素到最后一个元素,依次比较两个相邻的数字,如果前者较大而后者较小,则交换两个位置数字; 2.在第一次遍历之后,将最大数存储在数组的最后一个元素中,然后从第一个元素到倒数第二个元素,依次比较两个相邻的数字,如果前者较大而后者较小,则交换两个数字的位置; 3.重复第1步n-1次,然后将每遍通过的次数与上一次相比进行一次比较,以完成要求。示例1.在100中随机生成10个数字,使用冒泡方法将它们按升序排列,然后输出它们。
编程思想:使用最后一个数字与前一个数字进行比较,如果它小于前一个数字,则交换位置,然后与前一个数字进行比较,如果它小于前一个数字,则交换位置,知道它是比以前的数字大或已经在最前面!以这种方式重复8次以安排订单! #include& lt; stdio.h& gt; #include& lt; stdlib.h& gt; #define n 10 int main(void){int a [n],i,j,t; printf(“在100内随机生成10个数字: ”); for(i = 0; i& lt; n; i ++){a [i] = rand()%100; printf(“%d ",a [i]);} printf("输出: ”); for(j = 1; j< = n-1; j ++){/ * n处理次数n-1次* / for(i = 0; i& lt = n-1-j; i ++){ / *每个行程都比前一个行程进行一次比较* / if(a [i]> a [i + 1]){t = a [i]; a [i] = a [i + 1]; a [i +1] = t;}}} for(i = 0; i& lt; n ++)+ {printf(“%d ",a [i]);}返回0;}操作结果:选择排序选择方法排序是一种相对容易理解的排序算法。假设将包含n个数字的序列以升序排序,则算法步骤为:1.从数组中查找存储的n个数字中最小数字的下标(请参阅算法的“查找最佳值”) ),然后将最小的数字换成第一个数字; 2.除第一个数字外,从其余的n开始查找-1个数字中最小的数字(n个数字的第二个小数)的下标,并将该数字与第二个数字交换; 3.重复步骤1 n-1次以完成搜索。
代码案例实现:#include& lt; stdio.h& gt; #include& lt; stdlib.h& gt; #define n 10int main(){int a [n],i,j,k,t; printf(”在以下范围内随机生成10100个数字: ”); for(i = 0; i& lt; n; i ++){a [i] = rand()%100; printf(“%d ",a [i]);} printf("输出: ”); for(i = 0; i< n-1; i ++)/ *进程n-1通过* / {k = i; Number)是最小的,k记录其下标* / for(j = i + 1; j< n; j ++){if(a [j]& lt; a [k])k = j;}如果(k!= i){t = a [i]; a [i] = a [k]; a [k] = t;}} for(i = 0; i& lt; n; i ++)printf(“%d ",a [i]); return 0;}运行结果:在100内随机生成10个数字,排序后输出。插入排序。
插入排序方法的要点是将每个数字立即插入到最终数组中。每次插入都会使数组井然有序。
代码示例:#include& lt; stdio.h& gt; #include& lt; stdlib.h& gt; #define n 10 int main(){int a [n] = {-1,3,6,9,13,22,27,32,49}; / *注意留出要插入的数字的空间* / int x,j,k; x = rand()%100; printf(“随机生成x的值:%d ",x); if(x> a [n-2]){a [n-1] = x; / *如果它大于最后一个数字,则将其存储在最后一个元素中* /}否则/ *查找要插入的位置* / {j = 0; while(j& lt; = n-2& amp; amp;> a [j]){j ++;} for(k = n-2; k& gt = j; k--) {/ *从最后一个数字到要插入的位置的数字,依次移回一位* / a [k + 1] = a [k];} a [j] = x; / *插入要插入的号码* /} printf(“输出: ”); for(j = 0; j& lt; = n-1; j ++)printf(“%d”,a [j]); return 0;}运行结果:随机生成一个数字,并将其插入到现有数组中,排序后输出:merge sort是将两个以升序(或降序)排列的数据序列合并为一个仍在数组中排列的数据序列。原始订单。
代码示例:#include& lt; stdio.h& gt; #include& lt; stdlib.h& gt; #define m 6 #define n 4 int main(){int a [m] = {-3,6,19,26,68,100},b [n] = {8,10,12,22}; int i,j,k,c [m + n];国际i = j = k = 0; printf(“数组的元素: ”); for(l = 0; l& lt; m; l ++){printf(“%d”,a [l]);} printf(“ b数组的元素: ”); for(l = 0; l& lt; n; l ++){printf(“%d”,b [l]);} printf(“ 合并数组元素: ”);尽管。