本文主要是介绍C算法:使用选择排序实现从(大到小/从小到大)排序数组,且元素交换不可使用第三变量。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
需求:
使用选择排序实现从(大到小/从小到大)排序,且元素交换不可使用第三变量
(异或交换法)
代码实现:
#include <stdio.h>
void maopao(int* array,int len,int(*swap)(int a,int b))
{int i,j;for(i=0;i<len-1;i++){for(j=i+1;j<len;j++){if(swap(array[i],array[j])){array[i] ^= array[j];array[j] ^= array[i];array[i] ^= array[j];}}}
}int asc(int a,int b){return a>b;
}int desc(int a,int b){return a<b;
}void printfArray(int* array,int len)
{int i;for(i=0;i<len;i++){printf("%d",array[i]);}printf("\n");
}int main()
{int array[9] = {5, 9, 3, 1, 2, 8, 4, 7, 6};int len = (sizeof(array)/sizeof(int));int mode;printf("please input mode num (1:asc 2:desc)\n");scanf("%d",&mode);switch(mode){case 1:maopao(array,len,asc);printf("asc:\n");break;case 2:maopao(array,len,desc);printf("desc:\n");break;default:printf("input mode num error!\n");break;}printfArray(array,len);return 0;
}
打印:
这篇关于C算法:使用选择排序实现从(大到小/从小到大)排序数组,且元素交换不可使用第三变量。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!