几种简单的排序算法实现
冒泡排序
void bubbleSort(int *pData,int count) { for (int i = 1;i<count;i++) { for (int j = count-1;j>=i;j--) { if (pData[j]<pData[j-1]) { int iTmp = pData[j]; pData[j] = pData[j-1]; pData[j-1] = iTmp; } } } }
选择排序
void selectSort(int* list,int count) { int min,i,j; for (i = 0;i <count;i++) { min = i; for (j=i+1;j<count;j++) { if(list[i]>list[j]) min = j; } if(min != i) swap(list[i],list[min]); } }
折半插入排序算法
void binary_insertion_sort(int array[], int n) { int i, j, temp, m, low, high; for (i = 1; i < n; i++) { temp = array[i]; low = 0; high = i-1; //5,36,24,10,6,12 while (low <= high) { m = (low +high) / 2; if(array[m] > temp) high = m-1; else low = m+1; } for (j = i-1; j>=high+1; j--) array[j+1] = array[j]; array[j+1] = temp; cout<<endl; } }
插入排序
void InsertSort(int array[],int n) { for(int i=1;i<n;i++) { for(int j=i;j>0;j--) { if(array[j]>array[j-1]) swap(array[j],array[j-1]); else break; } } }
快速排序
void quick_sort(int s[], int left, int right) { if(left<right) return; int i = left,j=right,temp = s[left],t; while(i!=j) { while(i<j && temp <= s[j]) j--; while(i<j && temp >= s[i]) i--; if (i<j) { t = s[i]; s[i]=s[j]; s[j]=t; } } s[left] = s[i]; s[i]=temp; quick_sort(s,left,i-1); quick_sort(s,i+1,right); }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。