kingfeng1983
級別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看kingfeng1983的 主題 / 回貼
樓主  發(fā)表于: 2009-04-01 17:35
各位高手知道的請幫助講解一下,冒泡法?
最好用例子說明!
本人非常感激那些熱心助人的好人!
shuaigeshi
蟄伏......
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 101 個
工控威望: 220 點
下載積分: 700 分
在線時間: 36(小時)
注冊時間: 2009-02-14
最后登錄: 2021-08-10
查看shuaigeshi的 主題 / 回貼
1樓  發(fā)表于: 2009-04-01 20:04
冒泡法?記得學C語言的時候見到過 是用于對一組數(shù)據(jù)選擇性的排序   你要問的是這個么
zxc6688
工業(yè)自動化是我們的目標
級別: 略有小成
精華主題: 1 篇
發(fā)帖數(shù)量: 385 個
工控威望: 338 點
下載積分: 3994 分
在線時間: 174(小時)
注冊時間: 2007-09-11
最后登錄: 2024-01-05
查看zxc6688的 主題 / 回貼
2樓  發(fā)表于: 2009-04-01 20:14
這是在GOOGLE上搜到的

Bubble Sort(冒泡法)

最簡單的排序方法是冒泡排序方法。這種方法的基本思想是,將待排序的元素看作是豎著排列的“氣泡”,較小的元素比較輕,從而要往上浮。在冒泡排序算法中我們要對這個“氣泡”序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,并時刻注意兩個相鄰的元素的順序是否正確。如果發(fā)現(xiàn)兩個相鄰元素的順序不對,即“輕”的元素在下面,就交換它們的位置。顯然,處理一遍之后,“最輕”的元素就浮到了最高位置;處理二遍之后,“次輕”的元素就浮到了次高位置。在作第二遍處理時,由于最高位置上的元素已是“最輕”元素,所以不必檢查。一般地,第i遍處理時,不必檢查第i高位置以上的元素,因為經(jīng)過前面i-1遍的處理,它們已正確地排好序。這個算法可實現(xiàn)如下。

(冒泡法排序是一個比較簡單的排序方法。在待排序的數(shù)列基本有序的情況下排序速度較快。若要排序的數(shù)有n個,則需要n-1輪排序,第j輪排序中,從第一個數(shù)開始,相鄰兩數(shù)比較,若不符合所要求的順序,則交換兩者的位置;直到第n+1-j個數(shù)為止,第一個數(shù)與第二個數(shù)比較,第二個數(shù)與第三個數(shù)比較,......,第n-j個與第n+1-j個比較,共比較n-1次。此時第n+1-j個位置上的數(shù)已經(jīng)按要求排好,所以不參加以后的比較和交換操作。例如:第一輪排序:第一個數(shù)與第二個數(shù)進行比較,若不符合要求的順序,則交換兩者的位置,否則繼續(xù)進行二個數(shù)與第三個數(shù)比較......。直到完成第n-1個數(shù)與第n個數(shù)的比較。此時第n個位置上的數(shù)已經(jīng)按要求排好,它不參與以后的比較和交換操作;第二輪排序:第一個數(shù)與第二個數(shù)進行比較,......直到完成第n-2個數(shù)與第n-1個數(shù)的比較;......第n-1輪排序:第一個數(shù)與第二個數(shù)進行比較,若符合所要求的順序,則結(jié)束冒泡法排序;若不符合要求的順序,則交換兩者的位置,然后結(jié)束冒泡法排序。
共n-1輪排序處理,第j輪進行n-j次比較和至多n-j次交換。
從以上排序過程可以看出,較大的數(shù)像氣泡一樣向上冒,而較小的數(shù)往下沉,故稱冒泡法。)



Bubble Sort程序:


STL C++程序:(VC++6.0通過)
#include "stdafx.h"
#include "iostream.h"

template<class T>
class doit{
private:
int x,y;
T temp;
public:
doit(T* in,int count)
{
for(y=0;y<count-1;y++)
{
for(x=1;x<count-y;x++)
{
if((*(in+x))>(*(in+x-1)))
{
temp=(*(in+x-1));
(*(in+x-1))=(*(in+x));
(*(in+x))=temp;
}
}
}
}
};

int main()
{
double a[4]={1.1,1.3,1.9,2.2};
doit<double> d(a,4);
for(int i=0;i<4;i++)
{
cout<<a<<endl;
}
return 0;
}

C語言程序:(TC 2.0通過)
void doit(float* in,int count)
{
int x;
int y;
float temp;
for(y=0;y<count-1;y++)
{
for(x=1;x<count-y;x++)
{
if((*(in+x))>(*(in+x-1)))
{
temp=(*(in+x-1));
(*(in+x-1))=(*(in+x));
(*(in+x))=temp;
}
}
}
}
http://zxc6688.ys168.com/
xyd_hsn10
jakenghuang
級別: 網(wǎng)絡英雄
精華主題: 0
發(fā)帖數(shù)量: 384 個
工控威望: 5350 點
下載積分: 61683 分
在線時間: 448(小時)
注冊時間: 2008-12-29
最后登錄: 2021-03-08
查看xyd_hsn10的 主題 / 回貼
3樓  發(fā)表于: 2009-04-12 15:35
高手高手,服服
xiugu
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 129 個
工控威望: 234 點
下載積分: 769 分
在線時間: 18(小時)
注冊時間: 2007-01-10
最后登錄: 2021-08-09
查看xiugu的 主題 / 回貼
4樓  發(fā)表于: 2009-04-13 13:16
在PLC上,用循環(huán),字位移,比較或者循環(huán),變址寄存器,比較也能實現(xiàn)。
zxh.caocao
級別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看zxh.caocao的 主題 / 回貼
5樓  發(fā)表于: 2009-04-13 16:08
沒聽說過,謝謝問題
neaici
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 66 個
工控威望: 208 點
下載積分: 531 分
在線時間: 34(小時)
注冊時間: 2008-11-21
最后登錄: 2018-01-26
查看neaici的 主題 / 回貼
6樓  發(fā)表于: 2011-03-17 14:35
蠻好的啊 謝謝
1991234999
zdlsnail
級別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看zdlsnail的 主題 / 回貼
7樓  發(fā)表于: 2011-03-17 14:49
學習下
云子賢
給自己一些時間,或許可以......
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 276 個
工控威望: 432 點
下載積分: 1175 分
在線時間: 113(小時)
注冊時間: 2010-06-13
最后登錄: 2016-01-14
查看云子賢的 主題 / 回貼
8樓  發(fā)表于: 2011-03-17 18:06
   學習了.......
多看手冊少泡妞,哈.....
weichangye
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 226 個
工控威望: 365 點
下載積分: 3006 分
在線時間: 315(小時)
注冊時間: 2011-01-18
最后登錄: 2024-10-29
查看weichangye的 主題 / 回貼
9樓  發(fā)表于: 2011-03-17 20:36
長見識,原來是這樣