插入排序就像我们打扑克一样,在理排的时候,如果有新牌,就会一个一个比较,看谁的大。
代码如下
#include#include void Swap(int* px, int* py)//交换数据 { int tmp = *px; *px = *py; *py = tmp; } MyPrint(int* a, int sz)//打印数组 { for (int i = 0; i < sz; i++) { printf("%d ", a[i]); } printf("n"); } void iSort(int* a,int size) { assert(a);//断言,防止数组为空 for (int i = 0; i < size-1; i++) { int end = i; int x = a[end + 1];//记录准备插入的数 while (end >= 0)//与前面一个数进行比较 { if (a[end] > x) { Swap(&a[end], &a[end + 1]);//如果大的话就交换 end--; } else { break;//否则就退出循环 } } } } int main() { int sz = sizeof(arr) / sizeof(arr[1]); int arr[] = { 3,1,2,6,5,8,4,11,10,9 }; MyPrint(arr, sz); iSort(arr, sz); MyPrint(arr, sz); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)