C语言基础学习——排序

📅 2026/7/24 23:30:49
C语言基础学习——排序
排序升序1 2 3 4 5降序5 4 3 2 1一般统一升序排序算法选择排序、冒泡排序、插入排序、快速排序指针选择排序核心思想给合适的位置选择合适的数算法实现#includestdio.h int main() { int a[]{7,5,3,8,2,1,4,6,9,10}; //定义初始数组 int i,j,t; int lensizeof(a)/sizeof(a[0]); for (i0;ilen-1;i) //确定位置只用判断到数组倒数第二个 { for(ji1;jlen;j)//依次 { if(a[j]a[i])//判断 { ta[i]; a[i]a[j]; a[j]t; } } } for(i0;ilen;i) { printf(%d ,a[i]); //输出排序后的数组 } putchar(\n); return 0; }冒泡排序相隔两个元素两两比较小的在前大的在后代码实现#includestdio.h int main() { int a[]{7,5,3,8,2,1,4,6,9,10}; //定义初始数组 int i,j,t; int lensizeof(a)/sizeof(a[0]); for(i1;ilen;i) //趟数比1~len-1趟 { for(j0;jlen-i;j) //从a[0]比到a[n-i] { if(a[j] a[j1]) //前一个和后一个比 { t a[j]; a[j] a[j1]; a[j1] t; } } } for(i0;ilen;i) { printf(%d ,a[i]); } return 0; }插入排序将数据插入到已有的一个序列通过和已经有的序列比较找到合适的位置插入代码实现两个数组#includestdio.h int main() { int a[]{7,5,3,8,2,1,4,6,9,10}; //定义初始数组 int i,j,t; int lensizeof(a)/sizeof(a[0]); int b[len]; for(i0;ilen;i) { int t a[i]; //存放要移的数 j i; //j为准备放的位置 while(j0 tb[j-1]) //存的数比前一个数小就继续往前比 { b[j]b[j-1]; //前一个数往后移动 j--; //j往前移 } b[j] t //存的数比前一个数大直接存放 } return 0; }一个数组#includestdio.h int main() { int a[]{7,5,3,8,2,1,4,6,9,10}; //定义初始数组 int i,j,t; int lensizeof(a)/sizeof(a[0]); for(i0;ilen;i) { int t a[i]; //存放要移的数 j i; //j为准备放的位置 while(j0 ta[j-1]) //存的数比前一个数小就继续往前比 { a[j]a[j-1]; //前一个数往后移动 j--; //j往前移 } a[j] t //存的数比前一个数大直接存放 } return 0; }二分查找法折半查找前提数据必须是排好序的思想每次从中间找值把中间的值和要找的值进行比较中间位为mbe/2开头位为b结尾位为e中间的值 要找的值要找的值在中间值前面——把查找范围往前缩小end变化中间的值 要找的值要找的值在中间值后面——吧查找范围往后缩小begin变化中间值 要找的值找到了begin mid end 0 1 2 3 4 5 6 7 8 9 //下标 1 2 3 4 5 6 7 8 9 10 //数值代码实现while(be) { m(ab)/2 if(a[m]n) { e m-1; }else if(a[m]n) { b m1; }else { break; } } if(be) { printf(Found\n); }else { printf(No found\n); }