簡(jiǎn)單了解C語(yǔ)言中直接插入排序與直接選擇排序?qū)崿F(xiàn)
直接插入排序
基本思路:
1. 從a[0]開(kāi)始,也就是從1個(gè)元素開(kāi)始是有序的,a[1]~a[n-1]是無(wú)序的。
2. 從a[1]開(kāi)始并入前面有序的數(shù)組,直到n-1。
#include <stdio.h>
#define N 5
void insertsort(int a[], int n);
void swap(int *x, int *y);
void insertsort(int a[], int n){
int i,j;
for(i=1; i<n; i++){
for(j=i; j>0 && a[j]<a[j-1]; j--){
swap(&a[j], &a[j-1]);
}
}
}
void swap(int *x, int *y){
int i = *x;
*x = *y;
*y = i;
}
int main(void){
int a[N] = {2, 5, 3, 1, 8};
insertsort(a, N);
int i;
for(i=0; i<N; i++)
printf("%d ", a[i]);
return 0;
}
直接選擇排序
基本思路:
1. 從1開(kāi)始通過(guò)對(duì)比找出最小的數(shù)的下標(biāo)。然后把這個(gè)下標(biāo)的值和0交換。
2. 循環(huán)把值交換到1 2 3 ... n-1。
#include <stdio.h>
#define N 5
void selectsort(int a[], int n);
void swap(int *x, int *y);
void selectsort(int a[], int n){
int i,j;
for(i=0; i<n; i++){
int min = i;
for(j=i+1; j<n; j++){
if(a[j] < a[min]){
min = j;
}
}
swap(&a[i], &a[min]);
}
}
void swap(int *x, int *y){
int i = *x;
*x = *y;
*y = i;
}
int main(void){
int a[N] = {2, 5, 3, 1, 8};
selectsort(a, N);
int i;
for(i=0; i<N; i++)
printf("%d ", a[i]);
return 0;
}
相關(guān)文章
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之迷宮求解問(wèn)題
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之迷宮求解問(wèn)題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
VC++?2019?"const?char*"類(lèi)型的實(shí)參與"LPCTSTR"
這篇文章主要給大家介紹了關(guān)于VC++?2019?"const?char*"類(lèi)型的實(shí)參與"LPCTSTR"類(lèi)型的形參不兼容的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-03-03
Microsoft Visual C++ 安裝失敗 0x80070666的問(wèn)題解
本文主要介紹了Microsoft Visual C++ 安裝失敗 0x80070666的問(wèn)題解決,錯(cuò)誤可能由已安裝其他VisualC++版本、VisualC++安裝異常、Windows更新計(jì)劃安裝同一VisualC++包等原因引起,下面就來(lái)介紹一下解決方案,感興趣的可以了解一下2025-03-03
C++實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)最新版
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)最新版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
C++動(dòng)態(tài)分配和撤銷(xiāo)內(nèi)存以及結(jié)構(gòu)體類(lèi)型作為函數(shù)參數(shù)
這篇文章主要介紹了C++動(dòng)態(tài)分配和撤銷(xiāo)內(nèi)存以及結(jié)構(gòu)體類(lèi)型作為函數(shù)參數(shù),是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
C語(yǔ)言實(shí)現(xiàn)校運(yùn)動(dòng)會(huì)項(xiàng)目管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)校運(yùn)動(dòng)會(huì)項(xiàng)目管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
使用C++實(shí)現(xiàn)簡(jiǎn)單的文章生成器
這篇文章主要為大家詳細(xì)介紹了鵝湖使用C++實(shí)現(xiàn)簡(jiǎn)單的狗屁不通文章生成器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下2024-03-03
減少C++代碼編譯時(shí)間的簡(jiǎn)單方法(必看篇)
下面小編就為大家?guī)?lái)一篇減少C++代碼編譯時(shí)間的簡(jiǎn)單方法(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
C實(shí)現(xiàn)與 uint64_t 相同功能的類(lèi)
本文給大家分享的是筆者實(shí)現(xiàn)的仿uint64_t的類(lèi),可以用在不支持uint64_t的平臺(tái)上,雖然現(xiàn)在功能還不完善,但是還是分享給大家,也算是給大家一個(gè)思路吧。2015-12-12

