每年的9月20日,是全国爱牙日。作为中国特有的节日,爱牙日的由来主要与兰州地区的牙科医生--白成平有关。白成平在17岁的时候,就跟随美国口腔医学博士毛燮均学习牙医技术。此后,他便一直在兰州一家医院担任牙科医生。在50多年的牙医生涯中,他对人
全部3个回答 >c语言排选择序代码详细讲解
-
选择排序是一种简单直观的排序算法,其基本思想是每次从待排序的数列中选择最小(或最大)的元素,然后将其放到数列的起始位置,再从剩余的未排序元素中继续寻找最小(或最大)元素,放到已排序的元素序列的末尾,以此类推,直到所有元素排序完毕。
下面是C语言实现选择排序的代码:
```c
void selection_sort(int arr[], int len) {
int i, j, min_index;
for (i = 0; i < len - 1; i++) {
min_index = i; // 假设最小元素的下标为i
for (j = i + 1; j < len; j++) {
if (arr[j] < arr[min_index]) {
min_index = j; // 更新最小元素的下标
}
}
if (min_index != i) {
// 将最小元素与第i个元素交换位置
int tmp = arr[min_index];
arr[min_index] = arr[i];
arr[i] = tmp;
}
}
}
```
首先,我们定义了一个名为 selection_sort 的函数,函数的参数列表包含一个整型数组 arr 和数组的长度 len。
接下来是两个 for 循环,第一个 for 循环的目的是遍历整个数组,第二个 for 循环的目的是在未排序的元素中寻找最小的元素。
其中,min_index 变量用于记录当前未排序元素中最小元素的下标,初始化为 i,即假设最小元素的下标为 i。
在第二个 for 循环中,我们从 i+1 开始,因为前面的 i 个元素已经排好序了,不需要再次比较。如果找到了比当前最小元素还小的元素,就更新最小元素的下标。
当第二个 for 循环结束后,我们就可以得到当前未排序元素中的最小元素的下标,如果该下标不等于 i,说明当前未排序元素中的最小元素不是第 i 个元素,需要将其与第 i 个元素交换位置。
这样,第 i 个元素就已经排好序了,接下来继续遍历数组,找到第 i+1 个元素并将其放到正确的位置,直到整个数组排序完成。
总体来说,选择排序的时间复杂度为 O(n^2),因为需要嵌套两个 for 循环,且每次循环都要比较未排序元素中的最小元素。虽然时间复杂度比较高,但是选择排序的实现比较简单,不需要额外的空间,因此在一些简单的排序场景中还是比较常用的。
2023-10-24 00:58:55 -
void choise(int *a,int n) { int i,j,k,temp; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(a[k]>a[j]) k=j; if(i!=k) { temp=a[i]; a[i]=a[k]; a[k]=temp; } } }
2023-10-24 00:58:55 -
c语言通过函数调用实现选择排序法:
1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength);
2、写两个循环,在循环中应用简单选择插入排序:
int SelectSort(int * ListData,int ListLength)
{
int i , j ;
int length = ListLength;
for(i=0;i<=length-2;i++)
{
int k = i;
for(j=i+1;j<=length-1;j++)
{
if(ListData[k]>ListData[j])
{
k=j;
}
}
if(k!=i)
{
int tmp = ListData[i];
ListData[i] = ListData[k];
ListData[k] = tmp;
}
}
return 0;
}
3、对编好的程序进行测试,得出测试结果:
int main()
{
int TestData = {34,15,6,89,67};
int i = 0;
printf("排序之前的结果
");
for(i = 0;i<
5;i++)
printf("|%d|",TestData[i]);
int retData = SelectSort(TestData,5);
printf("排序之后的结果:
");
for(i = 0;i<
5;i++)
printf("|%d|",TestData[i]);
return 0;
}
4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。
2023-10-24 00:58:55 -
以下是c语言用选择排序算法实现数组排序的代码详细讲解:
1. 首先定义一个数组和一个临时变量用于交换数值。
2. 然后利用循环为整个数组排序,从第一个数开始遍历,排到倒数第二个数结束。
3. 在每次循环时,将当前数的值赋给临时变量,用后面的数依次与其比较,找到最小的数与当前数交换位置。
4. 最后输出排序后的数组。
以上是c语言排选择序代码的详细讲解。
选择排序算法是常用的基本排序算法之一,通过不断选择未排序部分的最小值,把它放到已排序部分的末尾,来实现排序。
当数组很小时,选择排序相对来说是性能较好的一种排序方法,但是当数组较大时,其复杂度达到O(n^2),效率较低,因此不适合排序大规模的数据。
2023-10-24 00:58:55
-
问 爱牙日的由来答
-
问 爱尔兰是哪个国家答
爱尔兰被称为翡翠岛国,这里西临大西洋、东靠爱尔兰海,与英国隔海相望。爱尔兰其实是一个独立的西欧国家,为北美通向欧洲的通道。爱尔兰、英格兰、苏格兰、威尔士是四个民族,也是四个地方。在历史上,这四个地方分分合合,瓜葛不断。1918年前,四个民族
全部10个回答 > -
问 圣城是哪个城市答
希腊雅典、中国洛阳、沙特麦加和以色列耶路撒冷被世界公认为世界四大圣城。关于洛阳圣城称号的由来,可追溯至上古时期。 相传上古时期,洛阳孟津县境内的黄河中出现背着“河图”的龙马和背着“洛书”的神龟,它们把图和书献给了伏羲后,伏羲根据图和书
全部10个回答 > -
问 芥菜的营养价值答
食材简介: 芥菜又称盖菜、挂菜,是中国的特产蔬菜。芥菜植株一般可高150厘米,幼茎及叶具有毛刺。经过长期选择和栽培,芥菜出现了不同的变种:根芥菜,也叫大头菜,主要用来腌制咸菜;叶芥菜俗称雪里红,可制成霉干菜;茎芥菜,用来制作榨菜;芽芥
全部10个回答 > -
问 猪肝的营养价值答
食材简介: 猪肝又名血肝,是猪的肝脏,与胆相连,肝脏是动物体内储存养料和解毒的重要器官。猪肝在消化系统中能够制造胆汁,一般呈紫红色、红褐色,质软而脆,呈楔形,右端圆钝,左端扁薄,可分为上、下两面,前后两缘,左右两叶。 营养功效:
全部10个回答 > -
问 花椒的营养价值答
食材简介: 花椒,又叫麻椒、蜀椒、点椒等,是我国原产的一种干、枝、叶、果均具浓郁辛香的落叶灌木或小乔木。它最初野生于我国中西部,是作为是敬神的香物。现在广泛分布于我国南北各地。由于它的果皮暗红,密生粒状突出的腺点,犹如细斑,故花椒之名
全部10个回答 > -
问 银鱼的功效与作用答
食材简介: 银鱼,又称炮仗鱼、面条鱼、白饭鱼等,通体白色,整体长约10厘米,刺少,有牙并且十分锋利。银鱼具有海洋至江河洄游的习性,多生活于水的下层,我国的太湖、西湖、马湖是三大银鱼盛产湖。 营养功效: 银鱼所含营养十分丰富,具有高
全部10个回答 > -
答
大理是悠闲和浪漫的代名词,下关的风,上关的花,苍山的雪,洱海的月,“风花雪月”构成了大理最著名的特色。去大理,我们的路线是先游览大理古城周边及崇圣寺三塔,然后环洱海游,最后以登苍山结束。大理古城是大理旅游的核心区,这里承载着大理历史文化、宗
全部10个回答 > -
问 原单和正品的区别答
现在的市场可以说是乌烟瘴气,光各种产品的头衔都搞的人一头雾水,那么,原单和正品有什么区别呢?所谓的原单货和“真货”的唯一区别,不过是“庶出”而已,数量很少。众所周知,现在国外60%以上的奢侈品都在中国生产。国外的一些大品牌会在国内找一些代工
全部10个回答 > -
问 太湖的简介答
“太湖美呀太湖美,美就美在太湖水”,1978年,这首《太湖美》传遍大江南北,太湖一时成为了大家都心中的向往之地。太湖位于江苏省南部,长江三角洲南部,是中国著名的五大淡水湖之一。太湖湖泊面积2427.8平方公里,湖岸线全长393.2公里。其西
全部10个回答 >