1#define _CRT_SECURE_NO_WARNINGS 1 2/************************************************ 3 * @Title:> 选择排序 4 * @Description:> 蛮力法实现选择排序 5 * @author:> HuaGe 6 * @date:> 2020/10/26 15:48 7 ***********************************************/ 8#include <stdio.h> 9#include <stdlib.h> 10 11//减治法思想实现插入排序 12void insertSort(int a[],int length) 13{ 14 //变量j用于标记已知数组中元素的下标,value用于存储待插入的数。 15 int j, value; 16 //第一个元素已经有序,所以从第二个元素起作为待插入元素 17 for (int i = 1; i < length-1; i++) 18 { 19 printf("第%d次插入:", i); 20 //输出排序后的数组 21 for (int k = 0; k < i; k++) 22 { 23 printf("%d\t", a[k]); 24 } 25 printf("\n"); 26 //保存待插入元素的值 27 value = a[i]; 28 j = i - 1; 29 //在已经排好序的序列中从右向左开始与待插入元素比较 30 while (j >= 0 && a[j] > value) 31 { 32 //若大于,此元素右移一位 33 a[j + 1] = a[j]; 34 //继续向左移动,比较下一个元素,直到找到小于待插入元素的元素 35 j--; 36 } 37 //找到小于待插入元素的元素(或者到了数组的最左边),在它的右边插入待插入元素。 38 a[j + 1] = value; 39 } 40} 41 42int main() 43{ 44 //创建一个数组 45 int arr[] = { 1,4,2,6,4,7 }; 46 //求出数组长度 47 int length = sizeof(arr) / sizeof(arr[0]); 48 printf("最初数组:"); 49 for (int i = 0; i < length; i++) 50 { 51 printf("%d ", arr[i]); 52 } 53 printf("\n"); 54 //调用排序函数 55 insertSort(arr,length); 56 //输出排序后的数组 57 printf("最后一次插入结果:"); 58 for (int i = 0; i < length; i++) 59 { 60 printf("%d\t", arr[i]); 61 } 62 return 0; 63} 64 65// 66//#include<stdio.h> 67//#include<string.h> 68// 69////用蛮力法实现选择排序 70//void selectSort(int* array,int length) 71//{ 72// for (int i = 0; i < length; i++) { 73// //假设位置为i的是要比较的最小值 74// int index = i; 75// //遍历比较(找后面是否有比i更小的数) 76// for (int j = i + 1; j < length; j++) { 77// if (array[j] < array[index]) { 78// index = j; 79// } 80// } 81// if (index != i) { 82// int temp = array[i]; 83// array[i] = array[index]; 84// array[index] = temp; 85// } 86// printf("第%d次排序:", i); 87// //输出排序后的数组 88// for (int k = 0; k <= length-1; k++) 89// { 90// printf("%d\t", array[k]); 91// } 92// printf("\n"); 93// 94// } 95//} 96// 97//int main() 98//{ 99// //创建一个数组 100// int arr[] = { 1,4,2,6,4,7 }; 101// //求出数组长度 102// int length = sizeof(arr) / sizeof(arr[0]); 103// printf("最初数组:"); 104// for (int i = 0; i < length; i++) 105// { 106// printf("%d ", arr[i]); 107// } 108// printf("\n"); 109// //调用排序函数 110// selectSort(&arr[0],length); 111// //输出排序后的数组 112// printf("最终数组:"); 113// for (int i = 0; i < length; i++) { 114// printf("%d ", arr[i]); 115// } 116// 117// return 0; 118//}
C语言学习Day13
Stella981
2021-10-11
1069 0 0
点赞
收藏
评论区
加载中...