|
分享C語(yǔ)言寫的部分排序算法,還沒完善夠 。- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define BUBBLE 0 //冒泡排序
- #define CHOOSE 1 //選擇排序
- //插入排序
- //希爾排序
- //歸并排序(迭代法)
- //歸并排序(遞歸法)
- //快速排序(迭代法)
- //快速排序(遞歸法)
- //雞尾酒排序
- //堆排序
- //計(jì)數(shù)排序
- //基數(shù)排序
- //桶排序
- int main(int argc,char *argv[]) //main函數(shù)的有參形式
- {
- int arr[5] = {9,3,2,5,7};
- int i = 0,j = 0;
- int change_time = 0, time = 0, last_time = 0, tmp_index= 0, temp = 0;
- system("cls"); //清屏
- printf("原始數(shù)據(jù):");
- for(i = 0; i < 5; i++)
- printf(" %d",arr[i]);
-
- printf("\n");
- #if BUBBLE
- printf("\033[36m冒泡排序:\n\033[0m");
- {
- change_time = 0;
- time = 0; //記錄排序次數(shù)
- last_time = 0;
- for(i = 0;i < 5 - 1; i++)
- {
- //每一次冒泡
- for(j = 0;j < 5-1-i;j++)
- {
- if(arr[j] > arr[j+1])
- {
- int temp = arr[j];
- arr[j] = arr[j+1];
- arr[j+1] = temp;
- time++;
- }
- }
- if(time == last_time)
- {
- printf("排序完成,內(nèi)循環(huán)次數(shù):%d,交換次數(shù):%d\n",i+1,time);
- break;
- }
- last_time = time;
- }
- }
- #endif
- #if CHOOSE
- printf("\033[36m選擇排序:\n\033[0m");
- {
- change_time = 0;
- time = 0; //記錄排序次數(shù)
- last_time = 0;
- for(i = 0;i < 5 - 1; i++)
- {
- tmp_index = i; //tmp_index 此時(shí)代表最小值的下標(biāo)
- for(j = i;j < 5;j++)
- {
- if(arr[j] < arr[tmp_index])
- {
- tmp_index = j;
- time++;
- }
- }
- if(tmp_index != i)
- {
- int temp = arr[tmp_index];
- arr[tmp_index] = arr[i];
- arr[i] = temp;
- change_time++;
- }
- if(i == 3)
- {
- printf("排序完成,內(nèi)循環(huán)次數(shù):%d,選擇次數(shù): %d,交換次數(shù): %d\n",i+1,time,change_time);
- break;
- }
- last_time = time;
- }
- }
- #endif
- printf("最終結(jié)果:");
- for(i = 0; i < 5; i++)
- printf(" %d",arr[i]);
-
- printf("\n\n按任意鍵退出\n");
- system("pause");
- return 0;
- }
復(fù)制代碼
|
|