void BubbleSort(int *pData,int cout )//冒泡算法,可可以加个表示、flag 如果一趟没有元素交换说明已经有序。 { int iTmep=0; for (int i=0;i<cout;i++) for(int j=1;j<cout-i;j++) if (pData[j-1]<pData[j]) { iTmep=pData[j-1]; pData[j-1]=pData[j]; pData[j]=iTmep; } }
void ExchangeSort(int*pData,int count) { int iTmep=0; for (int i=0;i<count;i++) for(int j=i+1;j<count;j++) if (pData[j]<pData[i]) { iTmep=pData[i]; pData[i]=pData[j]; pData[j]=iTmep; } }
1 void SelectSort(int *pData,int n)//选择排序 2 { 3 int temp; 4 int pos; 5 for (int i=0;i<n-1;i++) 6 { 7 temp=pData[i]; 8 pos=i; 9 for (int j=i+1;j<n;j++) 10 { 11 if (pData[j]>temp) 12 { 13 temp=pData[j]; 14 pos=j; 15 } 16 } 17 pData[pos]=pData[i]; 18 pData[i]=temp; 19 } 20 }
1 void InsertSort(int *pData,int n)//插入排序 2 { 3 int temp; 4 int K; 5 for (int i=1;i<n;i++) 6 { 7 8 9 K=i-1; 10 temp=pData[i]; 11 while ((temp<pData[K])&&(K>=0)) 12 { 13 pData[K+1]=pData[K]; 14 K--;//每次执行的时候 K都减去了一; 所以必须重新插入的时候必须包含入内; 15 16 } 17 pData[K+1]=temp; 18 19 } 20 21 22 }
快速排序 2种
1 int Partion(int * pData,int Left,int Right)//取头元素为临界分割点 2 { 3 int i=Left; 4 int j=Right; 5 int Key=pData[Right]; 6 7 while (i<j) 8 { 9 while(pData[i]<Key&&i<Right) 10 i++; 11 pData[j]=pData[i]; 12 while(pData[j]>Key&&j>Left) 13 j--; 14 pData[i]=pData[j]; 15 } 16 pData[i]=Key; 17 return i; 18 } 19 void Quicksort(int *pData,int Left,int Right) 20 { 21 if (Left<Right) 22 { 23 int k=Partion(pData,Left,Right); 24 Quicksort(pData,Left,k-1); 25 Quicksort(pData,k+1,Right); 26 } 27 28 }
void QucikSort(int *pData,int Left,int Right)//取中间点为临界点 { int i=Left; int j=Right; int mid=(Left+Right)/2; int Key=pData[mid]; int Temp=0; while (i<j) { while(pData[i]<Key&&i<Right) i++; while(pData[j]>Key&&j>Left) j--; if (i<=j) { Temp=pData[j]; pData[j]=pData[i]; pData[i]=Temp; i++; j--; } } if (i<Right) { QucikSort(pData,i,Right); } if (j>Left) { QucikSort(pData,Left,j); }