選擇排序核心思想 跟 冒泡排序差不多。
冒泡排序做得比較多無用功,而選擇排序相對(duì)較少。
選擇排序代碼如下:
#include<stdio.h>void swap(int *a,int *b){ int t; t = *a; *a = *b; *b = t;}int main(){ int a[]={5,2,3,1,4}; int i,j,min,len; len = sizeof(a)/sizeof(int); /*-----主要語句-----*/ for(i=0;i<len;i++) { min = i; for(j=i+1;j<len;j++) if(a[min]>a[j]) min = j; if(min!=i) swap(&a[i],&a[min]); } /*---------------*/ for(i=0;i<len;i++) PRintf("%d,",a[i]); return 0;} 打印結(jié)果:1,2,3,4,5由上圖可知道,選擇排序在第二層for循環(huán)中,是用 min 來記錄下較小數(shù)值的下標(biāo),一輪循環(huán)過后,min自然是最小的數(shù)值的下標(biāo),然后再做數(shù)值交換。
所以在二層for循環(huán),一輪循環(huán),才會(huì)做一次數(shù)值交換,而不像冒泡排序,只要是檢測到比最小的還小的數(shù)值就馬上做數(shù)值交換,而不等到整個(gè)循環(huán)結(jié)束(你怎么知道下一個(gè)會(huì)不會(huì)更小呢?)
因此冒泡排序是十分慢的算法
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注