简单排序:
-
int array[] = {12,8,13,9,223,44,5,66,7,88};:声明并初始化一个整型数组array,包含10个元素。 -
int i; int j; int tmp;:声明三个整型变量i、j和tmp,分别用于循环索引和临时存储交换值。 -
int len = sizeof(array)/sizeof(array[0]);:计算数组array的长度,即元素个数。sizeof(array)得到数组占用的总字节数,sizeof(array[0])得到数组单个元素的字节数,二者相除得到元素个数。 -
//简单选择排序法:注释,说明接下来的代码是实现简单选择排序。 -
for(i=0;i<len-1;i++):外层循环,i从0开始,直到len-2(因为len-1是最后一个元素的索引)。 -
for(j=i+1;j<len;j++):内层循环,j从i+1开始,直到len-1。 -
if(array[i] > array[j]):如果当前外层循环的元素array[i]大于内层循环的元素array[j]。 -
tmp = array[i];:将array[i]的值存储到临时变量tmp。 -
array[i] = array[j];:将array[j]的值赋给array[i]。 -
array[j] = tmp;:将tmp的值(原array[i]的值)赋给array[j]。 -
for(i=0;i<len;i++):循环遍历排序后的数组。 -
printf("%d ",array[i]);:打印数组array的每个元素。
这个程序首先定义了一个包含10个整数的数组,然后使用简单选择排序算法对其进行排序。排序完成后,程序遍历并打印排序后的数组元素。简单选择排序是一种不稳定的排序算法,其时间复杂度为O(n^2),在数组元素数量较大时效率较低。
#include <stdio.h>
int main()
{
int array[] = {12,8,13,9,223,44,5,66,7,88};
int i;
int j;
int tmp;
int len = sizeof(array)/sizeof(array[0]);
//简单选择排序法
for(i=0;i<len-1;i++){
for(j=i+1;j<len;j++){
if(array[i] > array[j]){
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
for(i=0;i<len;i++){
printf("%d ",array[i]);
}
return 0;
}
冒泡排序:
-
int array[] = {12,8,13,9,110,34,1,90,85,101,13,13};:声明并初始化一个整型数组array,包含12个元素。 -
int i; int j; int tmp;:声明三个整型变量i、j和tmp,分别用于循环索引和临时存储交换值。 -
int len = sizeof(array)/sizeof(array[0]);:计算数组array的长度,即元素个数。 -
for(i=0;i<len-1;i++):外层循环,i从0开始,直到len-2。 -
for(j=0; j<len-1-i;j++):内层循环,j从0开始,直到len-2-i。这里的len-1-i是为了防止已经排序好的部分再次进行比较。 -
if(array[j] > array[j+1]):如果当前元素array[j]大于下一个元素array[j+1]。 -
tmp = array[j];:将array[j]的值存储到临时变量tmp。 -
array[j] = array[j+1];:将array[j+1]的值赋给array[j]。 -
array[j+1] = tmp;:将tmp的值(原array[j]的值)赋给array[j+1]。 -
for(i=0;i<len;i++):循环遍历排序后的数组。 -
printf("%d ",array[i]);:打印数组array的每个元素。
这个程序首先定义了一个包含12个整数的数组,然后使用冒泡排序算法对其进行排序。冒泡排序是一种简单的排序算法,通过重复遍历要排序的列表,比较每对相邻元素的大小,并在必要时交换它们的位置。排序完成后,程序遍历并打印排序后的数组元素。冒泡排序的时间复杂度为O(n^2),在数组元素数量较大时效率较低,但对于小规模数据集,它的实现简单且直观。
#include <stdio.h>
int main()
{
int array[] = {12,8,13,9,110,34,1,90,85,101,13,13};
int i;
int j;
int tmp;
int len = sizeof(array)/sizeof(array[0]);
for(i=0;i<len-1;i++){
for(j=0; j<len-1-i;j++){
if(array[j] > array[j+1]){
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
}
for(i=0;i<len;i++){
printf("%d ",array[i]);
}
return 0;
}
887

被折叠的 条评论
为什么被折叠?



