久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
C語言選擇排序算法 程序源碼詳細分析
[打印本頁]
作者:
piaolin
時間:
2015-10-1 13:38
標題:
C語言選擇排序算法 程序源碼詳細分析
選擇排序的思想是在一個無序的數列中先找到最小值,其次將其存儲到數列的最前列或最后列,達到數列由小到大大或有大到小的排列效果。排序算法在實際應用中是非常實用的,個人主要用于數字濾波。本代碼是學習x甲魚《數據結構與算法》的筆記。代碼可以直接復制到Microsoft Visual C++編譯軟件運行。代碼用自己理解的語言做了詳細注釋。在自己的四軸飛行器電位器調速程序中就運用了該函數。
閑來無聊玩手機時可以看看這個,練練大腦。
#include<stdio.h>
void SelectSort(int k[],int n) //在這個函數里,因為沒有返回值,所以不能用return語句;int *k也可以
{ /* 根據C語言知識:形參“int k[]”是數組入口地址,每個元素占用4個字節,形參數組共占用4*n個字節 */
int i,j,temp,min,count1=0,count2=0 ; //加入count1,count2是為了計算程序復雜度
for(i=0;i<n-1;i++)
{
min=i; //保證從首元素開始逐個比較,這一句很重要!
for(j=i+1;j< n;j++)//“j=i+1”本元素和下一個元素
{
// count1++;
if(k[j]<k[min])//注意!這里如果改成“k[j]>k[min]”就是反序排列了!
{
/* 如果下一個元素比前一個元素大,就將二者位置交換,確保k[min]是該數列中的最小值 */
/* 通過這一層for循環將最小值與數列中每個元素比較一次,并交換位置確保將該數列中的最小值存放在i指針處 */
count1++; //比較次數
min=j; //貌似簡單,卻有技術含量!確保k[min]是該輪循環比較中的最小值
//換句話說,在該輪循環比較中讓每一個元素與最小值k[min]比較,最終實現確保k[min]是該數列中的最小值
}
}
if(min!=i)//如果min不等于i,說明位置發生了交換;并將最小值交換到數序前列;
{
temp=k[min];
k[min]=k[i];
k[i]=temp; //將最小值存放在數序前列;
count2++; //計算交換位置次數
}
}
printf("總共進行了%d次比較,進行了%d次移動" ,count1,count2);
}
int main(void)//比較,輸出最大值
{
// int m, a[10]={ 0,1,5,4,2,3,6,8 ,7,9};
// int m, a[10]={ 9,7,0,1,2,3,4,5,6,8 }; //那么排序的效率就大大增加了;
int m, a[10]={25,10,7,2,34,6,6,8 ,9,0};//那么排序的效率就大大增加了;
SelectSort( a,10);
printf("排序后的結果是:\n\r" );
for(m=0;m<10;m++)
{
printf("%d\n\r" ,a[m]);
}
// printf("\n\n" );
return 0; //結束主函數
}
復制代碼
/* 本例程學習:選擇排序的效率比優化后的冒泡排序效率略高,更易理解 */
-----王衍
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品久久久久av
|
秋霞av国产精品一区
|
91在线免费视频
|
91中文字幕在线观看
|
中文字幕一区二区三区不卡在线
|
久久久久久国产精品
|
久久久久久国产精品mv
|
日韩视频国产
|
欧美黑人国产人伦爽爽爽
|
在线观看免费观看在线91
|
在线一区视频
|
91久久精品国产91久久
|
国产成人综合在线
|
福利视频网站
|
国产精品污www一区二区三区
|
在线久草
|
国产成人影院
|
国产精久久久久久
|
日韩中文一区
|
www日韩欧美
|
天天射天天干
|
av天天看
|
人人鲁人人莫人人爱精品
|
狠狠的干
|
国产精品免费一区二区三区
|
www.亚洲视频
|
午夜一区
|
国产精品高潮呻吟久久aⅴ码
|
久久青
|
成人h动漫精品一区二区器材
|
日本超碰在线
|
免费看黄色国产
|
日韩欧美在线免费观看视频
|
欧美一区二区网站
|
欧美日韩一区二区在线
|
国产精品美女www爽爽爽
|
欧美在线视频一区
|
九九九久久国产免费
|
一级做a
|
欧美激情一区二区
|
国产精品久久久久久一级毛片
|