- #include <stdio.h>//预处理命令:文件包含
- void selectSort(int array[], int length);//声明
- void bubbleSort(int array[], int length);//声明
- int main()
- {
- int array[] = {12, 8, 4, 11, 5, 20, 1};//定义一个数组并初始化
- int length = sizeof(array)/sizeof(int);//数组元素个数
- selectSort(array, length);//调用选择排序
- bubbleSort(array, length);//调用冒泡排序
- return 0;
- }
- void selectSort(int array[], int length)
- {
- for (int x = 0; x < length; x++) {//第几轮排序
- int tempIndexMax = x;//最大值的下标
- for (int y = x+1; y < length; y++) {//当前这轮排序的具体实现
- //从大到小排序
- // if (array[y] > array[tempIndexMax]) {//array[y]是否大于先前的“最大值”
- // tempIndexMax = y;//如果大于先前的“最大值”,改变“最大值”的下标
- // }
- //从小到大排序
- if (array[y] < array[tempIndexMax]) {//array[y]是否小于先前的“最大值”
- tempIndexMax = y;//如果小于先前的“最大值”,改变“最大值”的下标
- }
- }
- //把找到的最大值和之前的最大值互换
- int temp = array[x];
- array[x] = array[tempIndexMax];
- array[tempIndexMax] = temp;
- }
- //遍历数组
- for (int z = 0; z < length; z++) {
- printf("%d\t", array[z]);
- }
- printf("\n");
- }
- void bubbleSort(int array[], int length)
- {
- for (int x = 0; x < length-1; x++)
- {
- //每趟排序都会确定一个数,所以需要再循环len-x次,但因为每次都是相邻的两个数进行比较,为了array[y+1]不越界,让j循环到len-1-x时停止。
- for (int y = 0; y < length-1-x; y++)
- {
- //从大到小排序
- // if (array[y] < array[y+1])
- // {
- // int temp = array[y+1];
- // array[y+1] = array[y];
- // array[y] = temp;
- // }
- //从小到大排序
- if (array[y] > array[y+1])//如果条件满足,交换array[y]和a[y+1]两个相邻数的值
- {
- int temp = array[y+1];
- array[y+1] = array[y];
- array[y] = temp;
- }
- }
- }
- //遍历数组
- for (int z = 0; z < length; z++) {
- printf("%d\t", array[z]);
- }
- printf("\n");
- }
复制代码 自己写的选择排序和冒泡排序。 |
|