排序算法,比较常用的是选择排序和冒泡排序
还是直接上代码比较直接,这里对1到9这几个数字进行了排序
示例代码
int arr[] = {5,8,6,4,9,3,1,7,2};
int length = sizeof(arr)/sizeof(int);
for(int i = 0; i < length - 1; i++)
{
for(int j = i + 1; j < length; j++)
{
if(arr[i] > arr[j])
{
//printf("%d和%d马上就换 ",arr[i],arr[j]); //打印了每次变换位置的数组状态
//printArray(arr, length);
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
执行结果:1 2 3 4 5 6 7 8 9
算法分析:
单擂台模式:
第0轮把最小的选到位置0
第1轮把第二小的选到位置1
xxxx
xxxx
具体过程打印:
第0轮:
5和4马上就换 5 8 6 4 9 3 1 7 2 //一连多,两两比较,只要大于后者,就替换
4和3马上就换 4 8 6 5 9 3 1 7 2
3和1马上就换 3 8 6 5 9 4 1 7 2//第一轮找到最大的放到最后位置。
第1轮:
8和6马上就换 1 8 6 5 9 4 3 7 2
6和5马上就换 1 6 8 5 9 4 3 7 2
5和4马上就换 1 5 8 6 9 4 3 7 2
4和3马上就换 1 4 8 6 9 5 3 7 2
3和2马上就换 1 3 8 6 9 5 4 7 2
第2轮:
8和6马上就换 1 2 8 6 9 5 4 7 3
6和5马上就换 1 2 6 8 9 5 4 7 3
5和4马上就换 1 2 5 8 9 6 4 7 3
4和3马上就换 1 2 4 8 9 6 5 7 3
第3轮:
8和6马上就换 1 2 3 8 9 6 5 7 4
6和5马上就换 1 2 3 6 9 8 5 7 4
5和4马上就换 1 2 3 5 9 8 6 7 4
第4轮:
9和8马上就换 1 2 3 4 9 8 6 7 5
8和6马上就换 1 2 3 4 8 9 6 7 5
6和5马上就换 1 2 3 4 6 9 8 7 5
第5轮:
9和8马上就换 1 2 3 4 5 9 8 7 6
8和7马上就换 1 2 3 4 5 8 9 7 6
7和6马上就换 1 2 3 4 5 7 9 8 6
第6轮:
9和8马上就换 1 2 3 4 5 6 9 8 7
8和7马上就换 1 2 3 4 5 6 8 9 7
第7轮:
9和8马上就换 1 2 3 4 5 6 7 9 8
附录
1我的粗心小bug