排序——代码演示

张开发
2026/4/13 16:37:44 15 分钟阅读

分享文章

排序——代码演示
#include stdio.h // 1. 冒泡排序 void maopao(int a[],int n) { int i,j,temp; for(i0; in-1; i) {//控制趟数共n-1趟 for(j0; jn-1-i; j) { if(a[j]a[j1]) { tempa[j]; a[j]a[j1]; a[j1]temp; } } } } // 1. 冒泡排序 2 void maopao2(int a[],int n) { int i,j,temp; int flag; for(i0; in-1; i) {//控制趟数共n-1趟 flag 1;//假设这一趟已经有序了 for(j0; jn-1-i; j) { if(a[j]a[j1]) { flag 0;//未排好 tempa[j]; a[j]a[j1]; a[j1]temp; } } if(flag){ break; } } } // 2. 简单选择排序 int main() { int a[100]; int n,i; scanf(%d,n); for(i0; in; i) { scanf(%d,a[i]); } maopao(a,n); for(i0; in; i) { printf(%d ,a[i]); } } 1.直接插入排序 void InsertSort(int R[],int length) { int i,j; for(i2 ; ilength ; i) { if(R[i-1]R[i])//将R[i]插入有序子表 { R[0] R[i]; // 复制为哨兵 for(ji-1; R[0]R[j];--j) R[j1] R[j]; // 记录后移 R[j1]R[0]; //插入到正确位置 } } } // 2.折半插入排序 void BInsertSort(int R[],int length){ int i,j,low,high,mid; for(i2;ilength;i){ R[0]R[i]; // 复制为哨兵 low1; highi-1; while(low high){ mid (lowhigh) / 2; if(R[mid] R[0]) highmid-1; else low mid1; } for(ji-1; jhigh1;--j) R[j1] R[j]; // 记录后移 R[high1] R[0]; //插入到正确位置 } } void print(int a[],int n){ for(int i1;in;i){ printf(%d ,a[i]); } printf(\n); } int main(){ int a[] {0,5,3,8,7,1,9,2,6}; int b[] {0,5,3,8,7,1,9,2,6}; // InsertSort(a,8);//直接插入排序 // BInsertSort(a,8);//折半插入排序 // print(a,8); maopao2(b,9); for(int i0;i9;i){ printf(%d ,b[i]); } }

更多文章