资深的教育行业网站开发,注册公司代理记账费用,建设部继续教育网站,西安公司网页制作选择排序的基本实现步骤#xff1a;
从待排序序列中找到最小#xff08;或最大#xff09;的元素。将找到的最小元素与待排序序列的第一个元素交换位置#xff0c;即将其放置到已排序序列的末尾。在剩余未排序元素中继续找到最小#xff08;或最大#xff09;元素#…选择排序的基本实现步骤
从待排序序列中找到最小或最大的元素。将找到的最小元素与待排序序列的第一个元素交换位置即将其放置到已排序序列的末尾。在剩余未排序元素中继续找到最小或最大元素然后与待排序序列的第二个元素交换位置。重复以上步骤直到所有元素均排序完毕。
#include stdio.h
#include time.h
#include stdlib.h
#include string.htypedef int ElemType;typedef struct {ElemType *elem;int TableLen;
} SSTable;void ST_Init(SSTable ST, int len) {ST.TableLen len;ST.elem (ElemType *) malloc(ST.TableLen * sizeof(ElemType));int i;srand(time(NULL));for (int i 0; i ST.TableLen; i) {ST.elem[i] rand() % 100;}
}void ST_print(SSTable ST) {for (int i 0; i ST.TableLen; i) {printf(%d , ST.elem[i]);}printf(\n);
}void swap(ElemType a, ElemType b) {ElemType tmp;tmp a;a b;b tmp;
}void BubbleSort(ElemType A[], int n) {int i, j;bool flag;for (i 0; i n - 1; i)//i 最多访问到 8{flag false;//元素是否发生交换的标志for (j n - 1; j i; j--)//把最小值就放在最前面{if (A[j - 1] A[j]) {swap(A[j - 1], A[j]);flag true;}}if (false flag)return;}
}int partition(ElemType *A, int low,int high) {ElemType pivotA[low];while (lowhigh){while (lowhighA[high]pivot)high--;A[low]A[high];while (lowhighA[low]pivot)low;A[high]A[low];}A[low] pivot;return low;
}void QuickSort(ElemType *A, int low,int high) {if(lowhigh) {int pivot_pos partition(A, low, high); //分隔值的位置QuickSort(A, low, pivot_pos - 1);QuickSort(A, pivot_pos 1, high);}
}void InsertSort(ElemType *A,int n){int inserVal,i,j;for (i 1; in ;i ) { //外层控制要插入的数inserValA[i]; //保存要插入的数//内存控制比较j0A[j]inserVal时A[j]位置元素向后覆盖for (j i-1; j 0A[j]inserVal ; j--) { //从后往前比A[j1]A[j];}A[j1]inserVal;}
}//从待排序序列中找到最小的元素
void SelectSort(ElemType A[],int n){int min; //min记录最凶暗元素的下标for (int i 0; i n; i) {mini;for (int j i1; j n ; j) {if(A[j]A[min]){//不在此处交换因为可能有很多个比min小的不能保证下标i是最小值minj;}}if(min!i){swap(A[i],A[min]);}}
}//从待排序序列中找到最大的元素
void SelectSort1(ElemType A[],int n){int max; //min记录最凶暗元素的下标for (int i n-1; i 0; --i) {maxi;for (int j 0;ji ; j) {if(A[j]A[max]){maxj;}}if(max!i){swap(A[i],A[max]);}}
}int main() {SSTable ST;ST_Init(ST, 10);ElemType a[10] {12, 22, 18, 64, 69, 84, 79, 95, 94, 78};
// memcpy(ST.elem, a, sizeof(a));ST_print(ST);
// BubbleSort(ST.elem, 10);
// QuickSort(ST.elem, 0,9);
// InsertSort(ST.elem,10);SelectSort(ST.elem,10);ST_print(ST);return 0;
}